我正在使用 jCryption.NET 来加密登录表单,我很好奇它的功能以及它是否安全或错误的方法。
该库使用RSA进行加密。如果我没记错的话,它首先与后端进行握手,获取生成的值,创建密钥,并使用该密钥来加密值。然后,生成的密钥与加密值一起发送到后端,后端代码使用该密钥进行解密。
这种方法安全吗?我不是安全专家,所以我不确定将密钥与有效负载一起发送是否是个好主意。
使用的密钥实际上是加密的,因此如果您在握手期间阅读源代码,它会解密密钥并将其存储在会话中。
var key = Convert.FromBase64String(Request.Form["key"]);
var keyDecrypted = cryptoProvider.Decrypt(key, false);
Session[SessionKeyStoreKey] = keyDecrypted;
当然,这是您在典型企业应用程序中不会使用的东西,但正如它所提到的,通常对于某些用例,您无法选择通过 HTTPS 提供页面,并且希望在数据上设置一些安全层,然后使用 JCryption适合你。
我的建议是评估业务案例,然后做出决定。