开发中常见的加密方式及应用

开发中常见的加密方式及应用,第1张

提供个加密函数代码:#define MAX_ENCRYPT_LEN 1024void MyEncrypt(const unsigned char sMsg, int cbMsg, unsigned char sEncryptMsg, int &cbEncryptMsg){ OpenSSL_add_all_algorithms(); //产生会话密钥 unsigned char SessionKey[16]; RAND_bytes(SessionKey,16);//加密 EVP_CIPHER_CTX ctx; EVP_CIPHER_CTX_init(&ctx); if(EVP_EncryptInit_ex(&ctx,EVP_get_cipherbynid(NID_aes_128_ecb),NULL,SessionKey,NULL)) { int offseti=0; int offseto=0; int offsett=0; for(;;) { if(cbMsg-offseti<=MAX_ENCRYPT_LEN) { EVP_EncryptUpdate(&ctx, sEncryptMsg+offseto, &offsett, sMsg+offseti, cbMsg-offseti); offseto+=offsett; break; } else { EVP_EncryptUpdate(&ctx, sEncryptMsg+offseto, &offsett, sMsg+offseti, MAX_SIGN_MSG); offseti+=MAX_SIGN_MSG; offseto+=offsett; } } EVP_EncryptFinal_ex(&ctx, sEncryptMsg+offseto, &offsett); offseto+=offsett; cbEncryptMsg=offseto; } EVP_CIPHER_CTX_cleanup(&ctx);}参数解释:const unsigned char sMsg 需要解密的明文int cbMsg 明文长度unsigned char sEncryptMsg 输出密文int &cbEncryptMsg 密文长度好了,这个函数刚写的,验证了一下,是没有问题的解密与这个比较类似

想省事直接用Windows CryptoAPI,各种密码学库也很多。AES作为对称加密算法一般不填充吧,有必要么?就算要填充,对称算法和填充一般不会搅到一块,你要找“用pksc5填充的aes源码”,一辈子也找不到,aes源码都是基础算法。公钥算法一般用pkcs填充的比较多

/

去掉解密出来字符串后面的一些转义字符

如果你想要测试是不是我们得到的解密字符串真的有一些我们看不到的转义字符,我们可以进行字符串的截取

你还可以用这种方式进行测试,你会发现这个是可以的

1、在苹果手机上点击“设置”选项。

2、点击“无线局域网”。

3、点击已连接的网络右侧的“i”。

4、往上滑,找到并点击“配置DNS”。

5、点击“手动”,然后点击“添加服务器”。

6、输入“8.8.8.8”,点击右上角“存储”即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10728861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存