java中的AES和RSA混合加密,在C#中应该如何考虑实现?

幻想月靡 2017-04-26 02:03:37

public static byte[] encryptLarger(byte[] data, Key key) throws Exception {

SecureRandom random = new SecureRandom();
byte[] secretKey = new byte[16];
random.nextBytes(secretKey);

javax.crypto.Cipher rsa = javax.crypto.Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsa.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
byte[] ciphedKey = rsa.doFinal(secretKey);


javax.crypto.Cipher aes = javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec sks = new SecretKeySpec(secretKey, "AES");
aes.init(Cipher.ENCRYPT_MODE, sks);
byte[] ciphedData = aes.doFinal(data);


byte[] result = new byte[ciphedKey.length + ciphedData.length];
System.arraycopy(ciphedKey, 0, result, 0, ciphedKey.length);
System.arraycopy(ciphedData, 0, result, ciphedKey.length, ciphedData.length);

return result;

}

...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻想月靡 2017-04-26
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
好吧,我看懂代码了,解码是根据长度截取byte成两部分,前半部分是随机密码,后半部分是真实数据 但我无知
我说的可能有点过了,毕竟你说我这又是从网上抄根本没搞懂代码的, 主要接口文档方写的太烂,我火气有点大,大家一起学习
打老虎zz 2017-04-26
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
好吧,我看懂代码了,解码是根据长度截取byte成两部分,前半部分是随机密码,后半部分是真实数据 但我无知
幻想月靡 2017-04-26
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
SecureRandom random = new SecureRandom(); byte[] secretKey = new byte[16]; random.nextBytes(secretKey); 确认这代码能解密?这都是生成了randomkey了,这又是从网上抄根本没搞懂代码的
这是接口文档里的示例,然而的确是能解密,无知也要有个限度,谢谢
  • 打赏
  • 举报
回复
SecureRandom random = new SecureRandom(); byte[] secretKey = new byte[16]; random.nextBytes(secretKey); 确认这代码能解密?这都是生成了randomkey了,这又是从网上抄根本没搞懂代码的

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧