1.管理NuGet程序包,搜索BouncyCastle,安装
2.代码示例
//加密算法:SM4
//加密模式:ECB
//填充模式:PKCS5Padding
//编码类型:UTF-8
/// <summary>/// 加密/// </summary>/// <param name="plainText"></param>/// <param name="secretKey"></param>/// <returns></returns>public string MS4Encrypt_ECB(string plainText, string secretKey){byte[] plaintext = Encoding.UTF8.GetBytes(plainText);byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);IBufferedCipher inCipher = CipherUtilities.GetCipher("SM4/ECB/PKCS5Padding");KeyParameter key = ParameterUtilities.CreateKeyParameter("SM4", keyBytes);inCipher.Init(true, key);byte[] cipher = inCipher.DoFinal(plaintext);//加密结果数据格式Hexbyte[] encrypted2 = Hex.Encode(cipher);return Encoding.UTF8.GetString(encrypted2).ToUpper();}/// <summary>/// 解密/// </summary>/// <param name="cipherText"></param>/// <param name="secretKey"></param>/// <returns></returns>public string MS4Decrypt_ECB(string cipherText, string secretKey){byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);byte[] plaintext = Encoding.UTF8.GetBytes(cipherText);IBufferedCipher inCipher = CipherUtilities.GetCipher("SM4/ECB/PKCS5Padding");KeyParameter key = ParameterUtilities.CreateKeyParameter("SM4", keyBytes);var cipher = Hex.Encode(plaintext);inCipher.Reset();inCipher.Init(false, key);byte[] bin = inCipher.DoFinal(cipher);string ans = Encoding.UTF8.GetString(bin);return ans;}