Des解密 以及 将。net的DEs加密 用android 的DES解密

来源:互联网 发布:刺客信条壁纸软件 编辑:程序博客网 时间:2024/06/06 08:51
.net加密   
/// <summary>        /// 3DES 加密        /// </summary>        /// <param name="input"></param>        /// <param name="key">密钥(长度24字符)</param>        /// <param name="coding">Encoding 编码格式</param>        /// <returns></returns>        public static string Des3Encrypt(this string input, string key, Encoding coding = null)        {            try            {                if (coding == null)                {                    coding = Encoding.UTF8;                }                var data = coding.GetBytes(input);                var des = new TripleDESCryptoServiceProvider                {                    Key = coding.GetBytes(key),                    Mode = CipherMode.ECB,                    Padding = PaddingMode.PKCS7                };                var cryp = des.CreateEncryptor();                return Convert.ToBase64String(cryp.TransformFinalBlock(data, 0, data.Length));            }            catch            {                return null;            }        }
android  解密
/** * ECB解密,不要IV * * @param key *            密钥 * @param data *            Base64编码的密文 * @return 明文 * @throws Exception */public static byte[] ees3DecodeECB(byte[] key, byte[] data)        throws Exception {    Key deskey = null;    DESedeKeySpec spec = new DESedeKeySpec(key);
//用这个DESKeySpec s = new DESKeySpec(key.getBytes())获取失败  不知道原因
    SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");    deskey = keyfactory.generateSecret(spec);    Cipher cipher = Cipher.getInstance("desede" + "/ECB/PKCS7Padding");    cipher.init(Cipher.DECRYPT_MODE, deskey);    byte[] bOut = cipher.doFinal(data);    return bOut;}
方法调用
byte[] bytes =  Base64.decode(src);// 这个base64用的是org.common.util的base64.String aa =new String(Des3Decrypt(src,key));

还有一种 我没有用到的cbc
  1.  public static String decryptDES(String decryptString, String decryptKey) throws Exception {  
  2.         byte[] byteMi = new Base64().decode(decryptString);  
  3.         IvParameterSpec zeroIv = new IvParameterSpec(iv);  
  4. //      IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);  
  5.         SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");  
  6.         Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");  
  7.         cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);  
  8.         byte decryptedData[] = cipher.doFinal(byteMi);  
  9.        
  10.         return new String(decryptedData);  
  11.     }  
原创粉丝点击