应用场景
加密,签名,摘要等需求时我们通常会涉及RSA,Md5,AES,DES,HAS-256,SM2,SM3,SM4等算法.
基础资源
根据需求而定
使用须知
RSA,SM2等摘要算法是广泛应用于简短信息加密和数字签名等领域。 长文信息建议用对称加密算法,但密钥用RSA,m2这种非对称加密算法处理。
配置步骤
【主流算法分类】
| 是否可逆 | 算法类型 | 算法 | 备注 |
| 可逆 | 对称加密 | DES | 密钥长度64,分组长度64 |
| AES | 密钥长度:128,192,256,分组长度128 | ||
| SM4 | 密钥长度:128,分组长度128 | ||
| 非对称加密 | RSA | 基于特殊的可逆模幂运算 | |
| ECC | 相比RSA:基于椭圆曲线,速度快,安全性高,发布时间较晚 | ||
| SM2 | 基于ECC,国产 | ||
| 不可逆 | 摘要 | HAS-256 | |
| Md5 | 摘要长度32 | ||
| SM3 | SM3算法采用Merkle-Damgard结构,消息分组长度为512位 ,摘要值长度为256位(62个字母数字组成的字符) |

[注]当然也可以使用openssl(下载地址:http://slproweb.com/products/Win32OpenSSL.html )
1、生成key
输入genrsa -out openssl.key 1024生成openssl.key文件。
openssl.key为key的名字随意起,1024为密钥长度
2、生成cer证书
接着输入req -new -x509 -key openssl.key -out openssl.cer -days 3650 -subj /CN=***.website
openssl.key为之前生成的key的名字,openssl.cer为生成的证书名字,3650为证书过期天数,CN的参数***.website是的你主机名或者IP地址(这里一定要写对,不然以后访问的话,浏览器会提示有风险)。
这样就生成了证书文件openssl.cer
3、生成需要的PFX私钥文件
输入pkcs12 -export -out openssl.pfx -inkey openssl.key -in openssl.cer
会让你输入密码,使用私钥时候使用的(千万不能忘记)。
这样就生成了私钥文件openssl.pfx。
A1.2)非对称加密-RSA的公钥/私钥对格式的转换(pkcs8,pkcs1,xml格式 等).
[注]这样不但可以支持c#自带的rsa生成xml格式的公钥私钥转为openssl那种格式,也能和java,php等语言的rsa算法公钥私钥互通。


B)非对称散列算法-ECC/Ecdsa系列的调试验证(注:ECC类的算法从安全性,性能都全面超越RSA, 包括国产SM2也是基于ECC).
B.1)基于ECC非对称(椭圆曲线类)的JwtToken生成与校验,Ecdsa签名与验签应用.

[注]生成token的.net代码实现:
public static KeyValuePair<string,string> CreateKeyPair(string keyName)
{
// 公钥,私钥
byte[] publicKeyBytes, privateKeyBytes;
CngKey cngKey;
// 打开密钥
if (CngKey.Exists(keyName))
{
cngKey = CngKey.Open(keyName);
cngKey.Delete();
}
// 生成密钥
CngKeyCreationParameters creationParameters = new CngKeyCreationParameters();
// 允许以明文的形式导出私钥
creationParameters.ExportPolicy = CngExportPolicies.AllowPlaintextExport;
// 使用 ECDsaP256,ECDsaP384,ECDsaP521 证书长度分别是 64 Bytes, 96 Bytes, 132 Bytes。
cngKey = CngKey.Create(CngAlgorithm.ECDsaP256, keyName, creationParameters);
// 导出公钥
publicKeyBytes = cngKey.Export(CngKeyBlobFormat.EccPublicBlob);
string EccPublicKey = Convert.ToBase64String(publicKeyBytes);
// 导出私钥
privateKeyBytes = cngKey.Export(CngKeyBlobFormat.EccPrivateBlob);
string EccPrivateKey = Convert.ToBase64String(privateKeyBytes);
return new KeyValuePair<string, string>(EccPrivateKey,EccPublicKey);
}C)非对称加密-国密SM2的加密解密校验的调试验证.
C1)国密SM2的公钥/私钥加解密.

C2)国密SM2的签名,验签,密钥交换(假定一个非安全环境下的安全交换密钥的机制).
[注]该工具集成了csdn大牛 jhqin的工具,在此进行致谢,博客地址: https://blog.csdn.net/jhqin/article/details/47005047

小叮当管理ERP在行业内顶尖,实现各种数字化流程管理,获得数万家企业的认可。
装饰行业管理与营销服务方案提供商
装饰行业管理与营销服务方案提供商
注册体验账号,享受体验账号和试用培训。
小叮当致力于以 “快速增效” 的方式,让每一位装企用户提高工作效率