Asp.net 跨javascript和c使用AES加密#

Asp.net 跨javascript和c使用AES加密#,asp.net,encryption,aes,Asp.net,Encryption,Aes,我试图用javascript加密一个字符串,然后用c#在服务器上解密它。我考虑在服务器端使用System.Security.Cryptography.Rijndael,在客户端使用类似或的AES实现 我对密码学了解不多,所以基本上我生成一个密钥并将其发送给客户端,然后用该密钥加密我的文本并将其发送回服务器 我的问题是Javascript AES实现使用密钥加密文本,而c#Rijndael类使用密钥和向量。这个向量来自哪里?AES只是一个分组密码,它是一个加密原语。它的目的是加密单个数据块(16字

我试图用javascript加密一个字符串,然后用c#在服务器上解密它。我考虑在服务器端使用System.Security.Cryptography.Rijndael,在客户端使用类似或的AES实现

我对密码学了解不多,所以基本上我生成一个密钥并将其发送给客户端,然后用该密钥加密我的文本并将其发送回服务器

我的问题是Javascript AES实现使用密钥加密文本,而c#Rijndael类使用密钥和向量。这个向量来自哪里?

AES只是一个分组密码,它是一个加密原语。它的目的是加密单个数据块(16字节)

加密需要的远不止这些。您需要一种方法来加密任意数量的数据,并且希望不会泄露任何信息。要做到这一点,您需要将数据量分成块,将最后一部分填充到完整的块中,然后以巧妙的方式对每个块进行加密。这样做是加密模式的责任

最简单的模式(电子烹饪书,ECB)只是用相同的密钥加密每个块,但这非常危险。其他模式需要某种初始化状态,这种状态需要是随机的,但可以公开

要加密和解密数据,您必须了解两侧的分组密码和加密模式,并且必须找到在加密端生成初始状态和在解密端恢复初始状态的方法,以分别初始化编码器和解码器


简而言之:你需要更多关于你正在做什么的信息

这可能不是你想要的。但我认为您实际上需要做的是实现SSL


这可能会解决您的问题,而不需要参与编码加密

你有没有更简单的方法来解决我的问题。我不需要绝密安全,只是不想在网络上发送纯文本。@nima:只要确保您知道两端使用的加密的所有细节,然后相应地设置两端。正如我所说,你需要知道加密模式。我想你是对的,解决这个问题不容易,所以我开始读一本关于它的书:)谢谢,我希望你没有放弃,如果你仍在寻找一个不需要深入研究密码学的非常简单的解决方案,我希望你能让我们知道。你也可以考虑使用C客户端和服务器端来减少复杂性。你应该看看,别人也有类似的问题。问题通常是密钥和IV在每一侧的设置方式,以及确保加密模式正确。几乎每个人都使用CBC(密码块链接),所以IV和密钥通常是最复杂的。