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

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

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

    隨筆 - 5, 文章 - 0, 評(píng)論 - 1, 引用 - 0
    數(shù)據(jù)加載中……

    DES算法簡(jiǎn)單例程

    2.4 DES算法簡(jiǎn)介
    DES即分組加密算法,明文密文都使用64位數(shù)據(jù)分組;采用對(duì)稱算法,加密和解密算法相同,但是使用的密鑰不同,密鑰使用56位數(shù);由于算法只使用了簡(jiǎn)單的數(shù)據(jù)邏輯和算術(shù)運(yùn)算,所以實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單。本文就使用DES算法來(lái)給出一個(gè)加解密工具類。
    3.java 實(shí)現(xiàn)的對(duì)字符串加解密工具類
    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;

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

    public EncryptData()
    {
    try
    {
    // 檢測(cè)是否有 TripleDES 加密的供應(yīng)程序
    // 如無(wú),明確地安裝SunJCE 供應(yīng)程序
    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);
    }
    // 創(chuàng)建一個(gè)密鑰
    encryptKey = "This is a test DESede Key".getBytes();

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

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

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

    // 創(chuàng)建一個(gè) DESede 密碼
    cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");

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

    /**
    * 加密算法
    * @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);

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

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

    // 構(gòu)造解密前的密碼
    byte[] decryptedPassword = password;

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

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

    評(píng)論

    # re: DES算法簡(jiǎn)單例程  回復(fù)  更多評(píng)論   

    這個(gè)寫的不錯(cuò)
    2007-08-10 09:40 | dreamstone

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲美女精品久久久| 青青草免费在线视频| 久久精品国产精品亚洲下载| 狠狠综合亚洲综合亚洲色| 国产精品国产午夜免费福利看| 亚洲jizzjizz在线播放久| 性色av无码免费一区二区三区| 亚洲精品美女网站| 免费看香港一级毛片| 无码天堂亚洲国产AV| 亚洲 自拍 另类小说综合图区| 一级女性全黄久久生活片免费| 亚洲日韩涩涩成人午夜私人影院| 人人鲁免费播放视频人人香蕉| 亚洲午夜精品一级在线播放放| 精品无码国产污污污免费网站国产 | 免费在线视频一区| 免费人成动漫在线播放r18 | 亚洲高清国产AV拍精品青青草原| 青青操免费在线观看| 麻豆亚洲av熟女国产一区二| 国产91免费在线观看| 亚洲成在人线在线播放无码| www.亚洲色图| 免费国产成人18在线观看| 亚洲视频在线免费观看| 永久免费av无码不卡在线观看| 日韩成人精品日本亚洲| 久久亚洲高清观看| 性盈盈影院免费视频观看在线一区| 国产av无码专区亚洲av毛片搜| 亚洲中文字幕无码日韩| 日本免费xxxx| 天堂亚洲免费视频| 亚洲精品人成电影网| 全亚洲最新黄色特级网站 | 久久亚洲AV无码西西人体| 91短视频在线免费观看| 极品色天使在线婷婷天堂亚洲| 亚洲精品~无码抽插| 毛片视频免费观看|