首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AES、Crypto.js和.NET的Websockets消息加密

使用AES、Crypto.js和.NET的Websockets消息加密
EN

Stack Overflow用户
提问于 2015-01-21 12:13:23
回答 1查看 1.7K关注 0票数 1

因此,我使用Websockets开发了一个用户聊天,并在服务器上使用了ASP.MVC。

我想加密所有从websockets发送和接收的消息(使用AES)。为此,我尝试在发送之前对用户消息进行加密(使用Crypto.js),并在服务器上解密(使用Security.Cryptography .net)。

问题是,客户端上的加密消息与服务器上的加密消息不同(客户端和用户上的消息、密钥和初始化向量相同)。

这是一种进行websockets消息加密的好方法吗?你还会推荐我什么其他的解决方案?

CryptoJS:

代码语言:javascript
复制
 var encrypted = CryptoJS.AES.encrypt("Message", communicationKey, { iv : communicationIV}, { mode: CryptoJS.mode.CFB });

.NET密码学:

代码语言:javascript
复制
 byte[] encryptedMessage = EncryptStringToBytes_Aes(decryptedMessage, keyToDecrypt, ivToDecrypt);
 return Convert.ToBase64String(encryptedMessage);

Crypto.js加密字符串是:

代码语言:javascript
复制
U2FsdGVkX18wnoGfYzHo2Ms/6CKsRC+cE1fj8ylSPlI=

.NET`s Security.Cryptography是:

代码语言:javascript
复制
kLApirWt1VcVu3tTuAizgA==

我在两边都使用相同的键和无效向量。有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 12:52:30

我假设您希望使用CFB模式,因为您在您的JavaScript代码中引用了这一点,而EncryptStringToBytes_Aes已经这样做了。

将模式放入第一个config对象中。没有第二个:

代码语言:javascript
复制
var encrypted = CryptoJS.AES.encrypt("Message", communicationKey, {
    iv : communicationIV,
    mode: CryptoJS.mode.CFB
});

此外,CryptoJS使用OpenSSLFormatter对输出进行格式化。如果您使用基于密码的加密,则其中包含一个salt,但似乎没有。如果要确保只交换密文,请将其编码为CryptoJS.enc.Base64.stringify(encrypted.ciphertext),而不是使用encrypted.toString()

如果您使用的是aes汇总,请不要忘记在页面中包含mod-cfb.js,因为只有CBC包含在其中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28066979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档