C#与android中DES与base64的相互转换

来源:互联网 发布:数据对比分析 编辑:程序博客网 时间:2024/05/21 06:31

DES相互转换

C#

        public static string Decrypt(string pToDecrypt, string sKey)        {            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();            byte[] buffer = new byte[pToDecrypt.Length / 2];            for (int i = 0; i < (pToDecrypt.Length / 2); i++)            {                int num2 = Convert.ToInt32(pToDecrypt.Substring(i * 2, 2), 0x10);                buffer[i] = (byte) num2;            }            provider.Key = Encoding.ASCII.GetBytes(sKey);            provider.IV = Encoding.ASCII.GetBytes(sKey);            MemoryStream stream = new MemoryStream();            CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);            stream2.Write(buffer, 0, buffer.Length);            stream2.FlushFinalBlock();            new StringBuilder();            return Encoding.GetEncoding("GBK").GetString(stream.ToArray());        }        public static string Encrypt(string pToEncrypt, string sKey)        {            DESCryptoServiceProvider provider = new DESCryptoServiceProvider();            byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(pToEncrypt);            provider.Key = Encoding.ASCII.GetBytes(sKey);            provider.IV = Encoding.ASCII.GetBytes(sKey);            MemoryStream stream = new MemoryStream();            CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);            stream2.Write(bytes, 0, bytes.Length);            stream2.FlushFinalBlock();            StringBuilder builder = new StringBuilder();            foreach (byte num in stream.ToArray()) {                builder.AppendFormat("{0:X2}", num);            }            return builder.ToString();        }


java

/** * 解密 * @param message * @param key * @return * @throws Exception */public static String decrypt(String message,String encoding) throws Exception {byte[] bytesrc = convertHexString(message);Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");DESKeySpec desKeySpec = new DESKeySpec(key.getBytes(encoding));SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(desKeySpec);IvParameterSpec iv = new IvParameterSpec(key.getBytes(encoding));cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);byte[] retByte = cipher.doFinal(bytesrc);return new String(retByte,encoding);}/** * 加密 * @param message * @param key * @return * @throws Exception */public static String encrypt(String message,String encoding) throws Exception {Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");DESKeySpec desKeySpec = new DESKeySpec(key.getBytes(encoding));SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(desKeySpec);IvParameterSpec iv = new IvParameterSpec(key.getBytes(encoding));cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);byte[] buf = cipher.doFinal(message.getBytes(encoding));String a = toHexString(buf).toUpperCase();return a;}/** * 字符串转换为16进制数组 * @param ss * @return */public static byte[] convertHexString(String ss) {byte digest[] = new byte[ss.length() / 2];for (int i = 0; i < digest.length; i++) {String byteString = ss.substring(2 * i, 2 * i + 2);int byteValue = Integer.parseInt(byteString, 16);digest[i] = (byte) byteValue;}return digest;}/** * 16进制数组转换为字符串 * @param b * @return */public static String toHexString(byte b[]) {StringBuffer hexString = new StringBuffer();for (int i = 0; i < b.length; i++) {String plainText = Integer.toHexString(0xff & b[i]);if (plainText.length() < 2)plainText = "0" + plainText;hexString.append(plainText);}return hexString.toString();}

BASE64

C#

            byte[] srcBuf = Encoding.GetEncoding("GBK").GetBytes(txtPlain.Text);txtEnc.Text = Convert.ToBase64String(srcBuf, 0, srcBuf.Length);byte[] buffer3 = Convert.FromBase64String(data);


java

byte[] enc = Base64.encode(encText.getBytes(encoding), Base64.DEFAULT);byte[] bytesrc = Base64.decode(encText.getBytes(encoding), Base64.DEFAULT);


0 0