文件传输-对数据进行加解密的方法!-阿里云开发者社区

开发者社区> 安全> 正文

文件传输-对数据进行加解密的方法!

简介: 由于项目安全要求,需要使用RSA算法对部分关键数据进行加密,并使用OAEPWithSHA-256AndMGF1对数据进行填充。通过搜索最终选择较为通用OpenSSL库,但OpenSSL的RSA算法默认是使用SHA-1的方式进行,而项目要求使用安全性更高的SHA-256,所以需要对OpenSSL进行部分修改。
由于项目安全要求,需要使用RSA算法对部分关键数据进行加密,并使用OAEPWithSHA-256AndMGF1对数据进行填充。通过搜索最终选择较为通用OpenSSL库,但OpenSSL的RSA算法默认是使用SHA-1的方式进行,而项目要求使用安全性更高的SHA-256,所以需要对OpenSSL进行部分修改。

OpenSSL使用RSA算法加解密数据非常简单,这里以加密为例,在通过PEM_read_RSA_PUBKEY读取证书后即可通过RSA_public_encrypt函数对数据进行加解密,看一下这个函数的声明: 

243bf6a9ea3a8440335020e6795b7e49414d9ee9

这里可以看到除了输入输出数据和rsa对象之外还有一个填充方式,可选的填充方式有RSA_PKCS1_PADDING、RSA_PKCS1_OAEP_PADDING、RSA_SSLV23_PADDING、RSA_NO_PADDING,这里选择RSA_PKCS1_OAEP_PADDING,但目前使用的还是SHA-1的算法,通过RSA_public_encrypt的参数不能修改。跟进RSA_public_encrypt函数: 

cbfe6a2102e3f59aa8265a42bd47f178ae0f702b

这里看到调用了rsa对象里一个指针指向的函数,OpenSSL里有大量这种用法,给代码阅读带来困难,一个快速且有效的方法是通过动态调试,在这类调用上下断点后单步跟进,即可看到其真正调用的函数。通过调试,这里会调用RSA_eay_public_encrypt,并根据我们传入的参数调用RSA_padding_add_PKCS1_OAEP: 

54fb82d78960ad6aa3ad559f6684968521277d82

而RSA_padding_add_PKCS1_OAEP只是新增了两个空的参数直接调用了RSA_padding_add_PKCS1_OAEP_mgf1,再看一下RSA_padding_add_PKCS1_OAEP_mgf1的实现: 

186f9e4c1a5266363cab0e226e44748178c9f1f2

当传入的md的值为空时,这里就会使用EVP_sha1的地址赋值,即默认使用SHA-1的算法,我们需要使用SHA-256算法时,一个最简单的方法就是将这里的EVP_sha1改为EVP_sha256,重新编译并链接修改过的库即可。但这可能会导致当前程序中其他使用了OpenSSL库的其他代码出现异常,一个更通用的方法是通过直接调用RSA_padding_add_PKCS1_OAEP_mgf1并将md的值赋为EVP_sha256。

6d43e5bedadd19316ca6aeb85e487624cbd5da5e

大文件传输领域,数据加密对于传输的重要性非比一般,安全稳定的传输数据是每一个企业所想要达到的要求。专注于文件传输的镭速 (Raysync)拥有独特的数据传输加密技术,在互联网时代,毕竟大数据的安全性是最重要的!满足企业的多个与安全相关的信息要求时,健康的加密技术可以轻松地作为可靠的安全工具。只使用加密技术,您永远无法获得最佳效益。事实上,您需要根据您的独特要求和风险战略性地适当地使用它。在这个时代,加密文件传输服务已经成为安全在线大文件传输最流行的方法之一。在保护敏感数据和信息方面,加密功能可以作为一道防线。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章