Java中AES加解密的时候如果AESKeyGenerator在init(256,secureRandom)这里使用的是256位得到32字节256位的密钥摘要。但是在C中如果使用SHA1CryptoServiceProvider得到的密钥摘要是20字节,请教各位大佬C#要实现这样和Java互通的加解密怎么办呢。
1、密码学基础密码学是研究如何保护信息安全性的一门科学,涉及数学、物理、计算机、信息论、编码学、通讯技术等学科,已经在生活中得到广泛应用。密码学组成分支分为编码学和密码分析学。密码编码学主要研究对信息进行编码,实现信息的隐蔽。密码分析学主要研究加密消息的破译或消息的伪造。二者相互独立,又相互依存,在矛盾与斗争中发展,对立统一。密码学的发展历史大致可划分为三个阶段:机密性仅有发送方和指定的接收方能够理解传输的报文内容。
鉴别发送方和接收方都应该能证实通信过程所涉及的另一方,通信的另一方确实具有他们所声称的身份。即第三者不能冒充跟你通信的对方,能对对方的身份进行鉴别。报文完整性即使发送方和接收方可以互相鉴别对方,但他们还需要确保其通信的内容在传输过程中未被改变。不可否认性如果人们收到通信对方的报文后,还要证实报文确实来自所宣称的发送方,发送方也不能在发送报文以后否认自己发送过报文。
2、AES并不等于RijndaelAES的定义:AES的区块长度固定为128比特,密钥长度则可以是128,192或256比特;Rijndael使用的密钥和区块长度均可以是128,192或256比特。加密过程中使用的密钥是由Rijndael密钥生成方案产生。大多数AES计算是在一个特别的有限域完成的。AES不等于“Rijndael”,AES是Rigndael的子集。
3、密码技术(十一秘密的精华在使用对称密码、公钥密码、消息认证码、数字签名等密码技术使用,都需要一个称为密钥的巨大数字。然而,数字本身的大小并不重要,重要的是密钥空间的大小,也就是可能出现的密钥的总数量,因为密钥空间越大,进行暴力破解就越困难,密钥空间的大小是由密钥长度决定的。对称密码DES的密钥的实质长度为56比特(7个字节),例如,一个DES密钥用二进制可以表示为:用十六进制则可以表示为:51EC4B123D4203而用十进制则可以表示为:在对称密码三重DES中,包括使用两个DES密钥的DESEDE2和使用三个DES密钥的DESEDE3这两种方式。