/// <summary> /// 文件解密长字符串专用 /// </summary> /// <param name="value"></param> /// <returns></returns> public static byte[] SM4DecryptBinary(byte[] value) { if (value.Length < 1) { return(value); } int deoutlen = 0; IntPtr deip = IntPtr.Zero; string base64str = Encoding.UTF8.GetString(value); var deiflg = SM4EncryptHelper.sm4_decrypt_binary(base64str, base64str.Length, out deip, out deoutlen); if (deiflg == (int)SM4_ERROR_CODE.SM4_SUCCESS) { byte[] dearray = new byte[deoutlen]; Marshal.Copy(deip, dearray, 0, deoutlen); var baseDecry = Encoding.UTF8.GetString(dearray); var result = Convert.FromBase64String(baseDecry); SM4EncryptHelper.sm4_freebuf(out deip); return(result); } SM4EncryptHelper.sm4_freebuf(out deip); return(value); }