文章类别:

   2019-03-12 14:51:06    2019-06-17 10:27:42   

对称加密 非对称加密 摘要算法
### 加密算法 说明:这里为了方便介绍,引入发送方A和接收方B       #### 非对称加密算法(被加密数据的安全性) `场景`:加密(RSA/DH/Elgamal/ECC)少量数据、数字签名(RSA/DSA/Elgamal) `算法`:DH RSA DSA ECC(椭圆曲线算法) Elgamal Merkle-Hellman(背包算法) Miller-Rabin(素数测试算法) 加密/解密场景 ```bash 发送方A 加密:DH/RSA/DSA公钥(接收方B)+对称加密的KEY-->密文KEY 接收方B 解密:DH/RSA/DSA私钥(接收方B)+密文KEY-->对称加密的KEY ``` 数字签名/验签场景 ```bash 发送方A 签名: 1.(SHA1/MD5+明文)->摘要1 2.摘要1+(RSA/Elgamal)私钥(发送方A)-->数字签名 接收方B 验签: 1. RSA公钥(发送方A)+数字签名-->摘要1(解密出来的) 2. SHA1/MD5+明文->摘要2(接收方B自己计算的) 3. 摘要1==摘要2 ?"成功":"失败" (对比摘要1和摘要2的值是否一致) ```    #### 对称加密算法 `场景`:适合加密大数据 `算法`:AES DES 3DES PBE RC5 Blowfish 加密/解密场景 ```bash 加密过程:明文+AES/DES+对称加密的KEY->密文 解密过程:密文+AES/DES+对称加密的KEY->明文 ``` AES加密算法的Counter模式 - ECB(电子密码本模式) - CTR(计数器模式) - GCM(CTR和GMAC结合)    #### AEAD加密方式(Authenticated Encryption with Associated Data (AEAD) `介绍`:一种同时具备保密性,完整性和可认证性的加密形式 AEAD - EtM方式:加密 then MAC - MtE方式:MAC then 加密 - E&M方式:加密 and MAC 真正的AEAD - GCM=(AES-CTR模式+GMAC结合) - ChaCha20-IETF-Poly1305 - XChaCha20-IETF-Poly1305    #### 摘要算法 `算法` MD5 SHA1 MAC GMAC ```bash 摘要操作:MD5/SHA1+文本->固定长度的HASH值 ```
阅读 63 评论 0 收藏 0
阅读 63
评论 0
收藏 0

   2018-10-18 21:20:29    2018-10-18 21:20:29   

图片解码 base64
### 获取到.jpg文件,windows打开显示已损坏 #### 查看文件的类型 ```bash $ file test.jpg ``` ``` test.jpg: ASCII text, with very long lines, with no line terminators ``` #### 显示文件为ASCII编码,进一步查看文件内容 ```bash $ cat test.jpg ``` ``` /43/DgABpGSUZAAQEBAABgAGAAD/vQA0AHBQUGBQQHBgUGCAcHCAoBGwoJCQoFHwAcARgVGhkYFRgXGx4XISsdFS0XGBIuIiUoKSssKyoQLyM... ``` #### 猜测应该是应用了base64编码,通过base64解码 ```bash $ cat test.jpg|base64 -d >test2.jpg ``` #### 再次查看文件的类型 ```bash $ file test2.jpg ``` ``` test2.jpg: data ``` 文件base64解码之后还不是jpeg格式 #### 查看文件的十六进制编码 ```bash $ cat test2.jpg|xxd |more ``` ```bash 0000000: ff8d ff0e 0001 a464 9464 0010 1010 0006 .......d.d...... 0000010: 0006 0000 ffbd 0034 0070 5050 6050 4070 .......4.pPP`P@p 0000020: 6050 6080 7070 80a0 11b0 a090 90a0 51f0 `P`.pp........Q. 0000030: 01c0 1181 51a1 9181 5181 71b1 e172 12b1 ....Q...Q.q..r.. 0000040: d152 d171 8122 e222 5282 92b2 c2b2 a102 .R.q."."R....... 0000050: f233 f2a2 2372 a2b2 a2ff bd00 3410 7080 .3..#r......4.p. 0000060: 80a0 90a0 41b0 b041 a2c1 81c1 a2a2 a2a2 ....A..A........ 0000070: a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 ................ 0000080: a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 ................ 0000090: a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 a2a2 ff0c ................ 00000a0: 0011 8010 0e20 0830 1022 0020 1110 3011 ..... .0.". ..0. 00000b0: 10ff 4c00 f100 0010 5010 1010 1010 1000 ..L.....P....... 00000c0: 0000 0000 0000 0010 2030 4050 6070 8090 ........ 0@P`p.. 00000d0: a0b0 ff4c 005b 0100 2010 3030 2040 3050 ...L.[.. .00 @0P 00000e0: 5040 4000 0010 d710 2030 0040 1150 2112 P@@..... 0.@.P!. 00000f0: 1314 6031 1516 7022 1741 2318 191a 8032 ..`1..p".A#....2 ``` #### 通过谷歌搜索ff8dff0e字符串显示 ![](https://image.ynotes.cn/ff8dff0e.png) 结果显示文件内容中的每一个字节,高4位和低4位调转了位置 #### 编辑python脚本实现转换 ```bash $ vim conv_jpg.py ``` ```python from __future__ import print_function import struct import ntpath import sys import os import base64 src_file=sys.argv[1] dest_dir=sys.argv[2] src_filename=ntpath.basename(src_file) desc_full_path=os.path.join(dest_dir,src_filename) f=open(src_file,'rb') f2=open(desc_full_path,'wb+') for bit in base64.b64decode(f.read()): #for bit in f.read(): c=ord(bit) c1=(c & 0xf0)>>4 c2=(c & 0x0f)<<4 c_n=c1|c2 b_c=struct.pack('B',c_n) f2.write(b_c) f.close() f2.close() ``` ```bash $ python conv_jpg.py test.jpg test_new.jpg ``` #### 再次查看文件的内容,显示文件格式为JPEG,说明解码成功! ```bash $ file test_new.jpg ``` ``` test_new.jpg: JPEG image data, JFIF standard 1.01 ```
阅读 105 评论 0 收藏 0
阅读 105
评论 0
收藏 0