Beispiel #1
0
 //Xác thực tham số dữ liệu
 public bool Verify(string Base64sign, Viegrid.Security.PublicKeySystem publicKeySystem, params object[] data)
 {
     try
     {
         //Gop DL thanh một khối
         System.Text.StringBuilder sb = new System.Text.StringBuilder();
         foreach (var item in data)
             sb.Append(item);
         //Chuyển về byte array
         byte[] dataBuffer = new System.Text.UTF8Encoding().GetBytes(sb.ToString());
         //Chuyển chữ ký về mảng byte
         byte[] signBuffer = System.Convert.FromBase64String(Base64sign);
         //xác thực
         return Verify(signBuffer, publicKeySystem, dataBuffer);
     }
     catch
     {
         return false;
     }
 }
Beispiel #2
0
        //Mã hóa một string trả về Base64String
        public string EncryptToBase64String(string data, Viegrid.Security.PublicKeySystem publicKeySystem)
        {
            byte[] plainbuffer = System.Text.Encoding.UTF8.GetBytes(data);

            byte[] encryptbuffer = Encrypt(plainbuffer, publicKeySystem);

            return System.Convert.ToBase64String(encryptbuffer);
        }
Beispiel #3
0
 public bool Verify(byte[] sign, Viegrid.Security.PublicKeySystem publicKeySystem, byte[] data)
 {
     try
     {
         //Initiate Crypto Service
         RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
         if (publicKeySystem == Viegrid.Security.PublicKeySystem.CheckOut)
             rsa.ImportCspBlob(checkOutPublicKey);
         else
             if (publicKeySystem == Viegrid.Security.PublicKeySystem.vtcafes)
                 rsa.ImportCspBlob(vtcafesPublicKey);
             else
                 if (publicKeySystem == Viegrid.Security.PublicKeySystem.OtherSystem)
                     rsa.ImportCspBlob(OtherSystemPublicKey);
                 else
                     rsa.ImportCspBlob(ViebooksPublicKey);
         //xac thuc
         return rsa.VerifyData(data, new SHA1CryptoServiceProvider(), sign);
     }
     catch
     {
         return false;
     }
 }
Beispiel #4
0
        //Mã hóa dữ liệu nhiều khối
        public byte[] Encrypt(byte[] data, Viegrid.Security.PublicKeySystem publicKeySystem)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            //Chose where place to send data
            if (publicKeySystem == Viegrid.Security.PublicKeySystem.CheckOut)
                rsa.ImportCspBlob(checkOutPublicKey);
            else
                if (publicKeySystem == Viegrid.Security.PublicKeySystem.vtcafes)
                    rsa.ImportCspBlob(vtcafesPublicKey);
                else
                    if (publicKeySystem == Viegrid.Security.PublicKeySystem.OtherSystem)
                        rsa.ImportCspBlob(OtherSystemPublicKey);
                    else
                        rsa.ImportCspBlob(ViebooksPublicKey);

            int block = (data.Length % DECRYPT_BLOCK != 0) ? data.Length / DECRYPT_BLOCK + 1 : data.Length / DECRYPT_BLOCK;
            int length = (block == 0) ? DATA_BLOCK : block * DATA_BLOCK;
            byte[] eData = new byte[length];
            int i1 = 0, i2 = 0;
            for (int i = 0; i < block - 1; i++)
            {
                byte[] t = new byte[DECRYPT_BLOCK];
                for (int j = 0; j < DECRYPT_BLOCK; j++)
                {
                    t[j] = data[i1++];
                }
                foreach (byte item in rsa.Encrypt(t, false))
                {
                    eData[i2++] = item;
                }
            }
            byte[] t1 = new byte[data.Length % DECRYPT_BLOCK];
            for (int i = 0; i < t1.Length; i++)
            {
                t1[i] = data[i1++];
            }
            // Encrypt the last block
            byte[] lastBlock = rsa.Encrypt(t1, false);
            for (int i = 0; i < lastBlock.Length; i++)
            {
                eData[i2++] = lastBlock[i];
            }

            return eData;
        }