// C/C++, 利用OpenSSL库对Socket传输进行安全加密(RSA+AES) // 1. 利用RSA安全传输AES生成密钥所需的Seed(32字节) // 2. 利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密 // --- // * 理论上只需要AES就能保证全部流程,但由于AES加密所需要的AES-KEY是一个结构 // * 这个一个结构,如果通过网络进行传输,就需要对它进行网络编码,OpenSSL里面没有现成的API // * 所以就引入RSA来完成首次安全的传输,保证Seed不会被窃听 // * 同样,只使用RSA也能完成全部流程,但由于RSA的处理效率比AES低, // * 所以在业务数据传输加密上还是使用AES // --- // 下面的代码包含了上述传输加密流程所需的所有步骤(OpenSSL部分) // 在实际的Socket应用开发时,需要将这些步骤插入到Client/Server网络通信的特定阶段 // --- // 为能完成代码的编译和执行,需要先安装OpenSSL执行库及开发库 // 以Debian为例,需要安装openssl 和 libssl-dev // 编译命令: g++ -o rsa-encrypt rsa-encrypt.cpp -lcrypto // --- // 所需的OpenSSL主要的API及功能描述 // 1. RSA_generate_key() 随机生成一个RSA密钥对,供RSA加密/解密使用 // 2. i2d_RSAPublicKey() 将RSA密钥对里面的公钥提出到一个BUF,用于网络传输给对方 // 3. d2i_RSAPublicKey() 将从网络传过来的公钥信息生成一个加密使用的RSA(它里面只有公钥) // 4. RSA_public_encrypt() 使用RSA的公钥对数据进行加密 // 5. RSA_private_decrypt() 使用RSA的私钥对数据进行加密 // 6. AES_set_encrypt_key() 根据Seed生成AES密钥对中的加密密钥 // 7. AES_set_decrypt_key() 根据Seed生成AES密钥对中的解密密钥 // 8. AES_encrypt() 使用AES加密密钥对数据进行加密 // 9. AES_decrypt() 使用AES解密密钥对数据进行解密 // --- // 一个典型的安全Socket的建立流程, 其实就是如何将Server随机Seed安全发给Client // -- C: Client S:Server // C: RSA_generate_key() --> RSAKey --> i2d_RSAPublicKey(RSAKey) --> RSAPublicKey // C: Send(RSAPublicKey) TO Server // S: Recv() --> RSAPublicKey --> d2i_RSAPublicKey(RSAPublicKey) --> RSAKey // S: Rand() --> Seed --> RSA_public_encrypt(RSAKey, Seed) --> EncryptedSeed // S: Send(EncryptedSeed) TO Client // C: Recv() --> EncryptedSeed --> RSA_private_decrypt(RSAKey, EncryptedSeed) --> Seed // --- 到此, Client和Server已经完成完成传输Seed的处理 // --- 后面的流程是它们怎样使用这个Seed来进行业务数据的安全传输 // C: AES_set_encrypt_key(Seed) --> AESEncryptKey // C: AES_set_decrypt_key(Seed) --> AESDecryptKey // S: AES_set_encrypt_key(Seed) --> AESEncryptKey // S: AES_set_decrypt_key(Seed) --> AESDecryptKey // --- Client传输数据给Server // C: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Server // S: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data // --- Server传输数据给Client // S: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Client // C: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data / ========================================================================================= */
2021-12-17 10:24:19 2KB Socket OpenSSL RSA AES
1
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原先的输入,运行的结果如下 开始的字符串就是输入的明文,第一个矩阵,是明文对应的状态矩阵,下面的字典是得到的经过扩展后的密钥,再下面的矩阵是经过加密之后的矩阵,最后的矩阵就是解密之后的矩阵,最后的输出就是还原的明文,可以发现AES加密解密的过程没毛病。 (3)字节代换:输入输出都是十六进制的矩阵格式,define_byte_subdtitution()函数的功能是完成字节代换,首先使用hex_t
2021-12-16 15:41:00 99KB aes加密 last num
1
第一种 import base64 from Crypto.Cipher import AES # 密钥(key), 密斯偏移量(iv) CBC模式加密 def AES_Encrypt(key, data): vi = '0102030405060708' pad = lambda s: s + (16 - len(s) ) * chr(16 - len(s) ) data = pad(data) # 字符串补位 cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
2021-12-16 15:38:12 44KB 加密 方法
1
AES的ECB、CBC、CFB、OFB、CTR五种加密模式,超实用,希望能帮助你。
2021-12-16 15:30:15 1.59MB AES ECB CBC
1
对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。 微信官方提供了多种编程语言的示例代码但是没有ASP的,网上也没有现成的,所以只能自己折腾了,通过整合CryptoJS v3.1.2可以实现AES跟BASE64的解密,从而实现纯ASP版的无组件加密数据解密算法。稍微修改一下可以也可以用于企业微信加密解密。
2021-12-16 09:08:01 15KB ASP 加密数据解密算法 AES-128-CBC PKCS#7
1
基于openssl,从命令行接受参数3个字符串类型的参数:参数1, 参数2, 参数3。 参数1=enc表示加密, 参数1=dec表示解密;参数2为待加密、 解密的文件名;参数3为密码。
2021-12-15 20:56:49 2.85MB AES openssl 文件
1
delphi AES算法源码,支持CBC模式,pkcs7padding 128位 192 256 等,支持向量
2021-12-15 16:17:34 16KB aes delphi
1
DevTool 实现mac端调试工具验证结果正确性,代码兼容iOS和MacOS,其中SM3,SM4使用C语言代码,补位代码和分组模式代码自行通过objective-c代码实现,加强理解。代码基本通过category形式提供。 当前完成 NSString和NSData各种编码转换(UTF-8,GBK,Latin1,unicode,shiftJI) NSData转换hexString及base64String方便调试看数据 NSString与NSData之间转换 base64 hash(MD5,SHA1,SHA256,SHA3,SM3,HMAC) 对称加解密(DES,3DES,AES,SM4) 支持分组加密模式有: ECB、CBC、PCBC、CFB、OFB、CTR 填充方式(分组不足补位)有:PKCS7、zero、ANSIX923、ISO10126、0x80等 der,cer证书文件解析 截图
2021-12-15 11:03:06 8.6MB certificate aes hash sha
1
在javaweb项目中,我们为了保证前后端安全通信,会使用加密后传输,后端解密。所有前段就需要用到这些工具。这个里面包含了所有前台加密的js代码。 像AES.JS,Md5.js等。内有java的aes加解密代码
2021-12-14 23:22:36 153KB aes 前后端加密通信
1
从身份认证、数据机密性和密钥管理等方面分析了无线局域网IEEE 802.11协议的安全机制,证明该协议存在着严重的安全漏洞,容易受到多种密码攻击。针对以上问题提出了一种新的基于NTRU公钥密码体制的无线局域网安全解决方案,该方案采用基于NTRU的公钥证书机制进行密钥管理、双向身份认证和会话密钥协商,采用AES分组加密算法进行通信数据加密。由于NTRU的高效性及公钥证书机制在密钥管理方面的灵活方便性,使得该方案能在传输带宽、终端处理器和存储器资源都十分有限的无线局域网中提供与有线网络等同的安全级别,而且高效
1