Skip to content

使用 BouncyCastle 库实现

C# 实现

Hao Nathan 2024-12-29C#加密 148 个字 1 分钟

无盐值

csharp
/// <summary>
/// SM3加密
/// </summary>
/// <param name="srcData"></param>
/// <param name="salt">盐</param>
/// <returns></returns>
public static string Encrypt(string srcData, string salt)
{
    byte[] msg = Encoding.Default.GetBytes(srcData);
    byte[] md = new byte[32];
    byte[] bytes = ArrayCat(msg, Encoding.Default.GetBytes(salt));
    SM3Digest sm3 = new SM3Digest();
    sm3.BlockUpdate(bytes, 0, bytes.Length);
    sm3.DoFinal(md, 0);
    return new UTF8Encoding().GetString(Hex.Encode(md));
}

含盐值

csharp

/// <summary>
/// sm3加密(含盐值)
/// </summary>
/// <param name="input"></param>
/// <param name="salt"></param>
/// <returns></returns>
public static string ComputeSm3WithSalt(string input, byte[] salt)
{
    byte[] contextBytes = Encoding.UTF8.GetBytes(input);
    byte[] saltKeyBytes = salt;

    IDigest digest = new SM3Digest();

    // 加盐
    digest.BlockUpdate(saltKeyBytes, 0, saltKeyBytes.Length);

    digest.BlockUpdate(contextBytes, 0, contextBytes.Length);

    byte[] hash = new byte[digest.GetDigestSize()];
    digest.DoFinal(hash, 0);

    return Hex.ToHexString(hash);
}

上次更新于: