Example #1
0
        /// <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);
        }