예제 #1
0
        public String Encrypt_ECB(String plainText)
        {
            SM4_Context ctx = new SM4_Context();

            ctx.isPadding = true;
            ctx.mode      = SM4.SM4_ENCRYPT;

            byte[] keyBytes;
            if (hexString)
            {
                keyBytes = Hex.Decode(secretKey);
            }
            else
            {
                keyBytes = Encoding.ASCII.GetBytes(secretKey);
            }

            SM4 sm4 = new SM4();

            sm4.sm4_setkey_enc(ctx, keyBytes);
            byte[] encrypted = sm4.sm4_crypt_ecb(ctx, Encoding.ASCII.GetBytes(plainText));

            String cipherText = Encoding.ASCII.GetString(Hex.Encode(encrypted));

            return(cipherText);
        }
예제 #2
0
        public byte[] Encrypt_ECB(byte[] plainBytes, byte[] keyBytes)
        {
            SM4_Context ctx = new SM4_Context();

            ctx.isPadding = false;
            ctx.mode      = SM4.SM4_ENCRYPT;

            SM4 sm4 = new SM4();

            sm4.sm4_setkey_enc(ctx, keyBytes);
            byte[] encrypted = sm4.sm4_crypt_ecb(ctx, plainBytes);
            return(encrypted);

            //return Hex.Encode(encrypted);
        }
예제 #3
0
        public String Decrypt_ECB(String cipherText)
        {
            SM4_Context ctx = new SM4_Context();

            ctx.isPadding = true;
            ctx.mode      = SM4.SM4_DECRYPT;

            byte[] keyBytes;
            if (hexString)
            {
                keyBytes = Hex.Decode(secretKey);
            }
            else
            {
                keyBytes = Encoding.ASCII.GetBytes(secretKey);
            }

            SM4 sm4 = new SM4();

            sm4.sm4_setkey_dec(ctx, keyBytes);
            byte[] decrypted = sm4.sm4_crypt_ecb(ctx, Hex.Decode(cipherText));
            return(Encoding.ASCII.GetString(decrypted));
        }