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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 由于项目安全要求,需要使用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)拥有独特的数据传输加密技术,在互联网时代,毕竟大数据的安全性是最重要的!满足企业的多个与安全相关的信息要求时,健康的加密技术可以轻松地作为可靠的安全工具。只使用加密技术,您永远无法获得最佳效益。事实上,您需要根据您的独特要求和风险战略性地适当地使用它。在这个时代,加密文件传输服务已经成为安全在线大文件传输最流行的方法之一。在保护敏感数据和信息方面,加密功能可以作为一道防线。
相关文章
|
6月前
|
应用服务中间件 开发工具 数据安全/隐私保护
客户端加密(CSE)
阿里云OSS客户端加密提供数据安全,加密解密过程在客户端完成,密钥用户自管。步骤包括:管理密钥、使用SDK加密数据、上传密文到OSS、下载时SDK解密。目前(2020年3月)仅Python SDK支持此功能,更多SDK可能会后续添加。参照阿里云最新文档以获取准确信息。
75 3
|
1月前
|
算法 安全 数据安全/隐私保护
加密和解密数据
【10月更文挑战第6天】加密和解密数据
50 2
|
1月前
|
安全 Unix 数据安全/隐私保护
企业级 文件传输加密应用,干货分享
企业级 文件传输加密应用,干货分享
21 0
|
2月前
|
人工智能 小程序 数据安全/隐私保护
埃特巴什码加解密小程序
埃特巴什码加解密小程序
|
6月前
|
监控 安全 网络安全
秘钥通信如何防止数据在传输过程中被篡改?
【5月更文挑战第14天】秘钥通信如何防止数据在传输过程中被篡改?
72 0
|
6月前
|
Shell 数据安全/隐私保护
加密解密工具
加密解密工具
170 1
|
安全 算法 大数据
对称加密加密原理和开发场景解析
加密是自古以来人们都在不断使用的技术,目的是为了隐藏信息,只是随着时代在不断的变化,加密也在不断的更新。从古代的藏宝图对藏宝地点进行隐藏。到二战时候,破译敌方电台,都是属于加密和破解的过程。进入21世纪后,加密在互联网时代也有了新的加密方法。也创造了密码学这个学科。目前在加密的场景下,通常分为:可逆加密和不可逆加密。而在可逆加密场景里又分为:对称加密和非对称加密。本次主要讨论集中在可逆加密上。可逆加密顾名思义就是在对明文进行加密后生成密文,能够通过解密把密文再还原成明文。数据加密一般主要解决三个问题:可信问题(非对称加密可解决),防篡改问题(不可逆加密解决),防窃听问题...
395 0
|
算法 安全 数据安全/隐私保护
非对称加密加密原理和开发场景解析
过上一节,就能很好的理解非对称加密就是加密和解密双方使用的是不同的密钥。比喻就是:一把锁,如果被A用钥匙锁上了,那么A无法继续使用自己的钥匙打开,只能让B用他的钥匙打开。而如果B用钥匙把锁给锁上之后,同样必须只有A的钥匙才能打开。所以非对称加密主要解决的问题就是:可信问题,防窃听问题。
731 0
|
算法 数据安全/隐私保护
数据传输加密方式总结
一般来说,HTTP数据交互过程中,数据都是以密文形式传输的,数据加密也就成了目前web中比较常见的部分 对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
2609 0
|
数据安全/隐私保护 C语言
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
157 0
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )