作品发布     邀请码    设为首页  收藏 

当前位置:文章免杀 → 文章内容 >> Java加密和数字签名 2私钥加密


Java加密和数字签名 2私钥加密

更新时间:2010-12-19 13:38:21   作者:华中帝国整理  来源:华中帝国
2)私钥加密: 消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密,要加密明文的消息的话,就要使用其他的算法,要确保机密性,我们需要使用私钥密码术来交换私有消息。 这种最好 ...

    2)私钥加密:

    消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密,要加密明文的消息的话,就要使用其他的算法,要确保机密性,我们需要使用私钥密码术来交换私有消息。

    这种最好理解,使用对称算法。比如:A用一个密钥对一个文件加密,而B读取这个文件的话,则需要和A一样的密钥,双方共享一个私钥(而在web环境下,私钥在传递时容易被侦听):

    使用私钥加密的话,首先需要一个密钥,可用javax.crypto.KeyGenerator产生一个密钥(java.security.Key),然后传递给一个加密工具(javax.crypto.Cipher),该工具再使用相应的算法来进行加密,主要对称算法有:DES(实际密钥只用到56位),AES(支持三种密钥长度:128、192、256位),通常首先128位,其他的还有DESede等,jdk1.5种也提供了对对称算法的支持,以下例子使用AES算法来加密:

    Java代码

    /**

    *PrivateExmaple.java

    *Copyright 2005-2-16

    */

    import javax.crypto.Cipher;

    import javax.crypto.KeyGenerator;

    import java.security.Key;

    /**

    *私鈅加密,保证消息机密性

    */

    public class PrivateExample{

    public static void main(String[] args) throws Exception{

    if(args.length!=1){

    System.err.println(“Usage:java PrivateExample <text>”);

    System.exit(1);

    }

    byte[] plainText=args[0].getBytes(“UTF8”);

    //通过KeyGenerator形成一个key

    System.out.println(“

    Start generate AES key”);

    KeyGenerator keyGen=KeyGenerator.getInstance(“AES”);

    keyGen.init(128);

    Key key=keyGen.generateKey();

    System.out.println(“Finish generating DES key”);

    //获得一个私鈅加密类Cipher,ECB是加密方式,PKCS5Padding是填充方法

    Cipher cipher=Cipher.getInstance(“AES/ECB/PKCS5Padding”);

    System.out.println(“

    ”+cipher.getProvider()。getInfo());

    //使用私鈅加密

    System.out.println(“

    Start encryption:”);

    cipher.init(Cipher.ENCRYPT_MODE,key);

    byte[] cipherText=cipher.doFinal(plainText);

    System.out.println(“Finish encryption:”);

    System.out.println(new String(cipherText,“UTF8”));

    System.out.println(“

    Start decryption:”);

    cipher.init(Cipher.DECRYPT_MODE,key);

    byte[] newPlainText=cipher.doFinal(cipherText);

    System.out.println(“Finish decryption:”);

    System.out.println(new String(newPlainText,“UTF8”));

    }

    }

责任编辑:华中帝国        



本文引用网址: 

Java加密和数字签名 2私钥加密的相关文章
发表评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码