Example #1
0
        /// <summary>
        /// 文件加密长字符串专用
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static byte[] SM4EncryptBinary(byte[] value)
        {
            if (value.Length < 1)
            {
                return(value);
            }
            string basestri   = Encoding.UTF8.GetString(value);
            var    ciphertext = SM4EncryptHelper.is_sm4_ciphertext(basestri, basestri.Length);

            if (ciphertext == (int)SM4_ERROR_CODE.SM4_SUCCESS)
            {
                return(value);
            }
            string base64str = Convert.ToBase64String(value);
            int    outlen    = 0;
            IntPtr ip        = IntPtr.Zero;
            var    iflg      = SM4EncryptHelper.sm4_encrypt_binary(base64str, base64str.Length, out ip, out outlen);

            if (iflg == (int)SM4_ERROR_CODE.SM4_SUCCESS)
            {
                byte[] array = new byte[outlen];
                Marshal.Copy(ip, array, 0, outlen);
                SM4EncryptHelper.sm4_freebuf(out ip);
                return(array);
            }
            SM4EncryptHelper.sm4_freebuf(out ip);
            return(new byte[0]);
        }