| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Security.Cryptography;
 
- using System.Windows.Forms;
 
- using System.Runtime.InteropServices;
 
- namespace PTMedicalInsurance.Common
 
- {
 
-     class Encrypt
 
-     {
 
-         public static string ToBase64hmac(string strText, string strKey)
 
-         {
 
-             HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.UTF8.GetBytes(strKey));
 
-             byte[] byteText = myHMACSHA1.ComputeHash(Encoding.UTF8.GetBytes(strText));
 
-             return System.Convert.ToBase64String(byteText);
 
-         }
 
-         public static string HMACSHA1Text(string EncryptText, string EncryptKey)
 
-         {
 
-             //HMACSHA1加密
 
-             string message;
 
-             string key;
 
-             message = EncryptText;
 
-             key = EncryptKey;
 
-             System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
 
-             byte[] keyByte = encoding.GetBytes(key);
 
-             HMACSHA1 hmacsha1 = new HMACSHA1(keyByte);
 
-             byte[] messageBytes = encoding.GetBytes(message);
 
-             byte[] hashmessage = hmacsha1.ComputeHash(messageBytes);
 
-             //return ByteToString(hashmessage);
 
-             return Convert.ToBase64String(hashmessage);
 
-         }
 
-         public static string HMACSHA1Text2(string EncryptText, string EncryptKey)
 
-         {
 
-             //HMACSHA1加密
 
-             HMACSHA1 hmacsha1 = new HMACSHA1();
 
-             hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(EncryptKey);
 
-             byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(EncryptText);
 
-             byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
 
-             return Convert.ToBase64String(hashBytes);
 
-         }
 
-         public static string SHA256EncryptStr(string data)
 
-         {
 
-             byte[] bytes = Encoding.UTF8.GetBytes(data);
 
-             byte[] hash = SHA256Managed.Create().ComputeHash(bytes);
 
-             StringBuilder builder = new StringBuilder();
 
-             for (int i = 0; i < hash.Length; i++)
 
-             {
 
-                 builder.Append(hash[i].ToString("x2"));
 
-             }
 
-             return builder.ToString();
 
-         }
 
-     }
 
-     class HaErBinEncrypt
 
-     {
 
-         [DllImport("HaErBinEncrypt.dll", CharSet = CharSet.Ansi, EntryPoint = "Signature", CallingConvention = CallingConvention.StdCall)]
 
-         private static extern int Signature(byte[] userid, byte[] sm2key, byte[] sm4key, byte[] plain, byte[] type, ref IntPtr pSignature, ref IntPtr pCipher);
 
-         [DllImport("HaErBinEncrypt.dll", CharSet = CharSet.Ansi, EntryPoint = "EncryptBySM4", CallingConvention = CallingConvention.StdCall)]
 
-         private static extern IntPtr EncryptBySM4(byte[] sm4key, byte[] plain);
 
-         [DllImport("HaErBinEncrypt.dll", CharSet = CharSet.Ansi, EntryPoint = "DecryptBySM4_ECB", CallingConvention = CallingConvention.StdCall)]
 
-         private static extern IntPtr DecryptBySM4_ECB(byte[] sm4key, byte[] pCipher);
 
-         [DllImport("HaErBinEncrypt.dll", CharSet = CharSet.Ansi, EntryPoint = "EncryptBySM3HASH", CallingConvention = CallingConvention.StdCall)]
 
-         private static extern IntPtr EncryptBySM3HASH(byte[] plain);
 
-         const string sm2key = "AYvxpsjPGd06aErh6w8uMFKqXwpV6V0pXJYuP4KfD0s=";
 
-         const string sm4key = "RNSNupzo1RAizTKU";
 
-         public string Signature(string plain, ref string cipher)
 
-         {
 
-             byte[] bUID = Encoding.UTF8.GetBytes("");
 
-             byte[] bSm2Key = Encoding.UTF8.GetBytes(sm2key);
 
-             byte[] bSm4Key = Encoding.UTF8.GetBytes(sm4key);
 
-             byte[] bPlain = Encoding.UTF8.GetBytes(plain);
 
-             byte[] bType = Encoding.UTF8.GetBytes("asn1");
 
-             byte[] btSignature = new byte[10240];
 
-             try
 
-             {
 
-                 IntPtr pSignatrue = IntPtr.Zero;
 
-                 IntPtr pCiper = IntPtr.Zero;
 
-                 int i = Signature(bUID, bSm2Key, bSm4Key, bPlain, bType, ref pSignatrue, ref pCiper);
 
-                 cipher = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pCiper);
 
-                 return System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pSignatrue); ;
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return "签名异常:" + ex.Message;
 
-             }
 
-         }
 
-         public string Encrypt(string plain)
 
-         {
 
-             byte[] bSm4Key = Encoding.UTF8.GetBytes(sm4key);
 
-             byte[] bPlain = Encoding.UTF8.GetBytes(plain);
 
-             IntPtr pCipher = IntPtr.Zero;
 
-             try
 
-             {
 
-                 pCipher = EncryptBySM4(bSm4Key, bPlain);
 
-                 return System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pCipher);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return "解密异常:" + ex.Message;
 
-             }
 
-         }
 
-         public string Decrypt(string cipher)
 
-         {
 
-             byte[] bSm4Key = Encoding.UTF8.GetBytes(sm4key);
 
-             byte[] bCipher = Encoding.UTF8.GetBytes(cipher);
 
-             IntPtr pPlain = IntPtr.Zero;
 
-             try
 
-             {
 
-                 pPlain = DecryptBySM4_ECB(bSm4Key, bCipher);
 
-                 return System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pPlain);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return "解密异常:" + ex.Message;
 
-             }
 
-         }
 
-         public static string EncryptBySM3HASH(string plain)
 
-         {
 
-             byte[] bPlain = Encoding.UTF8.GetBytes(plain);
 
-             IntPtr pCipher = IntPtr.Zero;
 
-             try
 
-             {
 
-                 pCipher = EncryptBySM3HASH(bPlain);
 
-                 return System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pCipher);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return  "解密异常:" + ex.Message;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |