GCM

在C#中加密和解密字符串?

一世执手 提交于 2019-12-25 21:42:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如何在C#中加密和解密字符串? #1楼 字符串的对称身份验证加密的现代示例。 对称加密的一般最佳实践是使用带有关联数据的身份验证加密(AEAD),但这不是标准.net加密库的一部分。 因此,第一个示例使用 AES256 ,然后使用 HMAC256 (两步 加密,然后使用MAC) ,这需要更多的开销和更多的密钥。 第二个示例使用开放源代码Bouncy Castle(通过nuget)使用AES256- GCM 的更简单实践。 这两个示例都具有一个主要功能,该功能接受秘密消息字符串,密钥和可选的非秘密有效载荷,并返回和经过身份验证的加密字符串,该字符串可选地以非秘密数据为前缀。 理想情况下,您可以将它们与随机生成的256位密钥一起使用,请参见 NewKey() 。 这两个示例还具有使用字符串密码生成密钥的辅助方法。 提供这些辅助方法是为了方便与其他示例匹配,但是它们的 安全性要差得多, 因为密码的强度将 远小于256位密钥 。 更新: 添加了 byte[] 重载,由于StackOverflow的答案限制,只有 Gist 才具有4个空格的缩进和api文档的完整格式。 .NET内置加密(AES)-然后MAC(HMAC) [要点] /* * This work (Modern Encryption of a String

HTTPS是什么?SSL/TLS又是什么?

淺唱寂寞╮ 提交于 2019-12-21 13:23:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> HTTPS是什么?SSL/TLS又是什么? 什么是安全? ​ 通常认为,如果通信过程具备了四个特性,就可以认为是“安全”的,这四个特性是:机密性(Secrecy/Confidentiality)、完整性(Integrity,也叫一致性),身份认证(Authentication)和不可否认(Non-repudiation/Undeniable)。 SSL/TLS SSL 即安全套接层(Secure Sockets Layer) TLS(传输层安全,Transport Layer Security),正式标准化,版本号从 1.0 重新算起,所以 TLS1.0 实际上就是 SSLv3.1。 密码套件 “ECDHE-RSA-AES256-GCM-SHA384”。 基本的形式是“密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法”,比如刚才的密码套件的意思就是: “握手时使用 ECDHE 算法进行密钥交换,用 RSA 签名和身份认证,握手后的通信使用 AES 对称算法,密钥长度 256 位,分组模式是 GCM,摘要算法 SHA384 用于消息认证和产生随机数。” 机密性由对称加密AES保证,完整性由SHA384摘要算法保证,身份认证和不可否认由RSA非对称加密保证 OpenSSL 是著名的开源密码学工具包,是