2019/03/04 加密算法02

在这里插入图片描述
如果原文的数据过大,那么用B公钥加密的效率是比较低下的
所以就把对称算法,和非对称算法混合使用
在这里插入图片描述
1.数据安全,2.来源确认
首先,由于是拿B的公钥加密的,到了B之后,B由于有自己的私钥
就可以解开,得到key,key是对称的,用key解密
得到数据,如果担心被第三方串改[data+Sa{hash(data)}]
先用A的公钥解密,公钥解密得到hash值,同样的hash算法对data做运算
两者之前是否相同,如果一样就证明数据来源
由于是对称秘钥解密,牺牲的效率和性能可以接受
HTTPS就是用这种方法

在这里插入图片描述
key如果要交换,一种是公钥加密,用对方的公钥加密,对方收到后用自己的私钥解密即可
另一种是DH算法

在这里插入图片描述
在这里插入图片描述
素数又叫质数,只能被直接或1整除,2,3,5,(1不是)
在这里插入图片描述2作为新的密码,协商出
第三方即时你能截获A和P,也不能算出2的值

在这里插入图片描述
在这里插入图片描述
数学,哲学,神学,所以好多科学家信神,因为自己也有很多理解不了
rpm -V 校验数据包里每个文件的变化,大小权限,属性的检查
rpm -k 检查签名是否完整,导入的钥匙就是公钥,因为每个包上都有私钥签名,发布的时候官方就用私钥加密了

在这里插入图片描述
-c就是用对称秘钥加密
在这里插入图片描述
输入对称口令
在这里插入图片描述
已经生成加密的文件
在这里插入图片描述
加密后的文件
在这里插入图片描述
复制到别的电脑上
在这里插入图片描述
-d解密
在这里插入图片描述
输入口令,可以读取文件
在这里插入图片描述
非对称秘钥加密
在这里插入图片描述
在这里插入图片描述
把这个文件用非对称秘钥加密,传给centos6,在传输过程别人拿到文件里,也解密不了,只能用6解密
就需要在7的机器上用6的公钥加密
但是默认机器上没有公钥,
需要生成秘钥对

在这里插入图片描述
默认2048位
0代表永远不过期

在这里插入图片描述
在这里插入图片描述
生成的公钥和私钥文件
就应该把 6的公钥交给7 系统,传输数据

export导出公钥
在这里插入图片描述
在这里插入图片描述
复制文件到7
在这里插入图片描述
假设centos7也有自己的公钥那么自己就要选择用哪个公钥
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
列出key
在这里插入图片描述
在这里插入图片描述
导入6的公钥
在这里插入图片描述
如何去用6的公钥加密
-e表示加密 -r表示用谁的秘钥加密

在这里插入图片描述
再复制 回到centos6上去
在这里插入图片描述
在这里插入图片描述
-o 解密之后生成文件,会自动判断是用的centos6公钥加密的文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除公钥,删除私钥
在这里插入图片描述
文件确实变小了
在这里插入图片描述
再次删除 公钥
在这里插入图片描述
提示先删除私钥再删除公钥
在这里插入图片描述
再删除公钥
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gpg
md5sum
sha1sum
ab
iptables
dig 测DNS
telnet
ssh
ss

awk重点,非对称加密算法
组合

在这里插入图片描述
查看下载 光盘的哈希值是否一样,判断完整性
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AES/CBC/PKCS7Padding是一种常用的加密算法,可用于对数据进行保护。在C语言中,可以通过使用OpenSSL库来实现该算法。 下面是一个使用AES/CBC/PKCS7Padding加密算法的示例代码: ```c #include <openssl/aes.h> #include <openssl/rand.h> #define AES_BLOCK_SIZE 16 void encrypt(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, const unsigned char *iv, unsigned char *ciphertext) { AES_KEY aesKey; AES_set_encrypt_key(key, 128, &aesKey); AES_cbc_encrypt(plaintext, ciphertext, plaintext_len, &aesKey, iv, AES_ENCRYPT); } void decrypt(const unsigned char *ciphertext, int ciphertext_len, const unsigned char *key, const unsigned char *iv, unsigned char *plaintext) { AES_KEY aesKey; AES_set_decrypt_key(key, 128, &aesKey); AES_cbc_encrypt(ciphertext, plaintext, ciphertext_len, &aesKey, iv, AES_DECRYPT); } int main() { unsigned char key[AES_BLOCK_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}; unsigned char iv[AES_BLOCK_SIZE]; unsigned char plaintext[32] = "Hello, AES/CBC/PKCS7Padding"; unsigned char ciphertext[sizeof(plaintext)]; unsigned char decryptedtext[sizeof(plaintext)]; RAND_bytes(iv, sizeof(iv)); encrypt(plaintext, sizeof(plaintext), key, iv, ciphertext); decrypt(ciphertext, sizeof(ciphertext), key, iv, decryptedtext); printf("Original Text: %s\n", plaintext); printf("Encrypted Text: %s\n", ciphertext); printf("Decrypted Text: %s\n", decryptedtext); return 0; } ``` 以上代码使用了OpenSSL库中的AES函数,分别实现了加密和解密的功能。主函数中生成了一个16字节的密钥和随机生成的16字节初始化向量。然后将明文进行加密,并将密文进行解密,最后打印出原始文本、加密文本和解密文本。 需要注意的是,加密后生成的密文长度要比原始明文长度稍长,因此ciphertext的长度使用了sizeof(plaintext)。为了避免截断问题,推荐使用静态大小的缓冲区来存储密文。 这只是一个简单的示例,实际应用中还需考虑安全性、密钥管理等因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值