<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 5, 文章 - 0, 評論 - 1, 引用 - 0
    數據加載中……

    DES算法簡單例程

    2.4 DES算法簡介
    DES即分組加密算法,明文密文都使用64位數據分組;采用對稱算法,加密和解密算法相同,但是使用的密鑰不同,密鑰使用56位數;由于算法只使用了簡單的數據邏輯和算術運算,所以實現起來相對簡單。本文就使用DES算法來給出一個加解密工具類。
    3.java 實現的對字符串加解密工具類
    import java.io.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import java.security.*;
    import java.security.spec.*;
    import com.sun.crypto.provider.SunJCE;
    import java.io.Serializable;

    /**
    * 提供加密算法,可以對輸入的字符串進行加密、解密操作
    */
    public class EncryptData
    {
    byte[] encryptKey;
    DESedeKeySpec spec;
    SecretKeyFactory keyFactory;
    SecretKey theKey;
    Cipher cipher;
    IvParameterSpec IvParameters;

    public EncryptData()
    {
    try
    {
    // 檢測是否有 TripleDES 加密的供應程序
    // 如無,明確地安裝SunJCE 供應程序
    try{ Cipher c = Cipher.getInstance("DESede"); }
    catch (Exception e)
    {
    System.err.println("Installling SunJCE provider.");
    Provider sunjce = new com.sun.crypto.provider.SunJCE();
    Security.addProvider(sunjce);
    }
    // 創建一個密鑰
    encryptKey = "This is a test DESede Key".getBytes();

    // 為上一密鑰創建一個指定的 DESSede key
    spec = new DESedeKeySpec(encryptKey);

    // 得到 DESSede keys
    keyFactory = SecretKeyFactory.getInstance("DESede");

    // 生成一個 DESede 密鑰對象
    theKey = keyFactory.generateSecret(spec);

    // 創建一個 DESede 密碼
    cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");

    // 為 CBC 模式創建一個用于初始化的 vector 對象
    IvParameters =
    new IvParameterSpec(new byte[]{12,34,56,78,90,87,65,43} );
    }
    catch (Exception exc)
    {
    // 記錄加密或解密操作錯誤
    }
    }

    /**
    * 加密算法
    * @param password 等待加密的密碼
    * @return 加密以后的密碼
    * @throws Exception
    */
    public byte[] encrypt(String password)
    {
    String encrypted_password = null;
    byte[] encrypted_pwd = null;

    try
    {
    // 以加密模式初始化密鑰
    cipher.init(Cipher.ENCRYPT_MODE,theKey,IvParameters);

    // 加密前的密碼(舊)
    byte[] plainttext = password.getBytes();

    // 加密密碼
    encrypted_pwd = cipher.doFinal(plainttext);

    // 轉成字符串,得到加密后的密碼(新)
    encrypted_password = new String(encrypted_pwd);
    }
    catch(Exception ex)
    {
    // 記錄加密錯誤
    }
    return encrypted_pwd;
    }

    /**
    * 解密算法
    * @param password 加過密的密碼
    * @return 解密后的密碼
    */
    public String decrypt(byte[] password)
    {
    String decrypted_password = null;
    try
    {
    // 以解密模式初始化密鑰
    cipher.init(Cipher.DECRYPT_MODE,theKey,IvParameters);

    // 構造解密前的密碼
    byte[] decryptedPassword = password;

    // 解密密碼
    byte[] decrypted_pwd = cipher.doFinal(decryptedPassword);
    // 得到結果
    decrypted_password = new String(decrypted_pwd);
    }
    catch(Exception ex)
    {
    // 記錄解密錯誤
    }
    return decrypted_password;
    }
    }

    posted on 2007-03-28 13:17 黑馬_2046 閱讀(849) 評論(1)  編輯  收藏 所屬分類: 加密解密

    評論

    # re: DES算法簡單例程  回復  更多評論   

    這個寫的不錯
    2007-08-10 09:40 | dreamstone

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩一区二区三区免费体验| 美女被艹免费视频| fc2成年免费共享视频网站| 免费观看AV片在线播放| 日本视频免费高清一本18| 久久精品免费大片国产大片| 黄色视频在线免费观看| 久久国产精品2020免费m3u8| 色屁屁www影院免费观看视频| 亚洲乱码卡一卡二卡三| 久久久久亚洲精品成人网小说 | 国产精品二区三区免费播放心| 2021免费日韩视频网| 国产桃色在线成免费视频 | 国产成人亚洲综合| 亚洲精品国产精品乱码在线观看| 亚洲欧洲自拍拍偷精品 美利坚| 日韩在线视频免费看| 国产精品免费视频一区| www.亚洲色图.com| 女人18毛片免费观看| 成年性羞羞视频免费观看无限| 日本免费污片中国特一级| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲乱妇熟女爽到高潮的片| 美女的胸又黄又www网站免费| 久久av免费天堂小草播放| 国产92成人精品视频免费| 国产1000部成人免费视频| 午夜男人一级毛片免费| 中文字幕在线亚洲精品| 久久亚洲国产精品| 亚洲av无码专区在线电影天堂| 黄页网站在线免费观看| 久久福利青草精品资源站免费| 亚洲免费电影网站| 亚洲真人日本在线| 亚洲午夜精品久久久久久app| 春暖花开亚洲性无区一区二区 | 女人与禽交视频免费看| 国产黄色一级毛片亚洲黄片大全|