日期:2014-05-18  浏览次数:20741 次

.net的des加密方法,如何用java实现. 谢谢 分不够再加~~~
C# code



/// <summary>
        /// 使用指定的加密算法、用随机密钥加密字符串
        /// </summary>
        /// <param name="Source">要加密的字符串</param>
        /// <returns>加密结果</returns>
        public string Encrypting(string Source,string Key)
        {
            #region temp
            string strTemp = Key;
            if(strTemp.Length * 8 > objCryptoService.LegalKeySizes[0].MaxSize)
            {
                // 如果密钥长度太长得话,截
                strTemp = strTemp.Substring(0,objCryptoService.LegalKeySizes[0].MaxSize / 8);
            }
            if(strTemp.Length * 8 < objCryptoService.LegalKeySizes[0].MinSize)
            {
                // 如果密钥长度太短得的话,在右边补空格
                strTemp = strTemp.PadRight(objCryptoService.LegalKeySizes[0].MinSize / 8);
            }
            if(objCryptoService.LegalKeySizes[0].SkipSize != 0 && (strTemp.Length * 8) % objCryptoService.LegalKeySizes[0].SkipSize != 0)
            {
                // 如果密钥长度不是密钥长度间隔单位的倍数,则补空格。
                strTemp = strTemp.PadRight(objCryptoService.LegalKeySizes[0].MaxSize / 8);
            }

            byte[] _Key = System.Text.Encoding.Default.GetBytes(strTemp);
            objCryptoService.Key = _Key;
            objCryptoService.IV = _Key;
            #endregion

            // 创建内存中的数据流
            System.IO.MemoryStream objMemoryStream = new System.IO.MemoryStream();

            // 创建加密器
            ICryptoTransform objEncryptor = objCryptoService.CreateEncryptor();

            // 创建加密转换文件流的加密流
            CryptoStream objCryptoStream = new CryptoStream(objMemoryStream, objEncryptor, CryptoStreamMode.Write);

            StreamWriter writer = new StreamWriter(objCryptoStream);
            writer.Write(Source);
            writer.Flush();
            objCryptoStream.FlushFinalBlock();

            // 获取输出
            byte[] bytOut = new byte[objMemoryStream.Length];
            objMemoryStream.Position = 0;
            objMemoryStream.Read(bytOut,0,bytOut.Length);

            string strDest = System.Convert.ToBase64String(bytOut);

            objCryptoService.Clear();
            objMemoryStream.Close();
            writer.Close();

            return strDest;
        }




------解决方案--------------------
不懂.net,帮顶~
------解决方案--------------------
我记得JAVA有专门的类来实现DES加密,但是我记不起在哪了。


------解决方案--------------------
网上应该有专门加密的类吧,不过自己没用过,帮顶啦,呵呵.
------解决方案--------------------
看看这个例子对你有用吗?

JAVA里使用 DES 加密解密的例子
------解决方案--------------------
是这个不
http://wang-tao.spaces.live.com/blog/cns!136f98ef1442f5a9!511.entry
听说 java是ECB模式,.net是CBC模式。
------解决方案--------------------
AES算法,看下.

import java.io.*;
import java.security.*;

import javax.crypto.*;

/**
 * AES算法生成密鑰和對文件加解密的實現。
 * @author Richard
 * AES--DES算法的后續版本,由于DES算法可以通過窮舉法破譯,因此不推薦使用。
 */
public class AESImpl {
 //產生AES密鑰
 public void createKey() {
try{
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom();
keygen.init(random);
SecretKey key = keygen.generateKey();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("aesKey.txt"));
out.writeObject(key);
out.close();
}catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (IOException e) {