一个用JAVA开发的会话密钥程序
时间:2008-05-06
/*
运行本程序你需要下载JCE,Bouncy Castle的JCE with Provider and Lightweight API
网址是 http://www.bouncycastle.org
配置如下:
在WINDOWS中,你需要把下载的bcprov-jdk14-119.jar文件拷贝到两个地方:
一个在你安装的JDK目录中,比如说我的是C:\j2sdk1.4.0-rc\jre\lib\ext
另一个在你的JDK运行环境中,我的是在
C:\Program Files\Java\j2re1.4.0-rc\lib\ext;
另外还要在对两个java.security进行修改:
我的在 C:\j2sdk1.4.0-rc\jre\lib\security\java.security;
C:\Program Files\Java\j2re1.4.0-rc\lib\security\java.security;
在java.security中加入 security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider
如果一切顺利,你就可以运行本程序了。
该程序具有对你的文件加解密功能。需要你指定的数据,程序中已给了接口。
比如说你指定了要加密的文件名"4.txt",加密后的文件存放位置"6.txt",
还有口令password如"liufeng"后,运行该程序,那么"6.txt" 中将是"4.txt"的密文。
注意口令是解密的钥匙,不要忘记。
其他解密过程自己参考。
本程序利用会话密钥加密,提供很多接口。如果你项目中需要加密过程,可以稍加改进为你所用
*/
import java.security.*;import java.security.spec.*;import javax.crypto.*;import javax.crypto.spec.*;import java.io.*;import java.util.*;public class FileEncryptorRSA {private static final int ITERATIONS=1000;//计算次数,在加盐中用到private static byte[] publicKeyBytes;//公钥private static byte[] privateKeyBytes;//私钥private static String SessionKey;//会话密钥public static String ENCRYPT_PRIVATEKEY_FILE="1.txt";//该文件放置加密的私钥private static String TEXT_FILE="4.txt";//要加密的文件private static String ENCRPTOR_TEXT_FILE="5.txt";//被加密后的文件private static String DENCRYPTOR_TEXT_FILE="6.txt";//解密后的文件private static String password="liufeng";//口令用于加密私钥public void setTEXT_FILE(String fileName){TEXT_FILE=fileName;}public void setENCRYPT_PRIVATEKEY_FILE(String fileName){ENCRYPT_PRIVATEKEY_FILE=fileName;}public String getENCRYPT_PRIVATEKEY_FILE(){return ENCRYPT_PRIVATEKEY_FILE;}public void setENCRPTOR_TEXT_FILE(String fileName){ENCRPTOR_TEXT_FILE=fileName;}public String getENCRPTOR_TEXT_FILE(){return ENCRPTOR_TEXT_FILE;}public void setDENCRYPTOR_TEXT_FILE(String fileName){DENCRYPTOR_TEXT_FILE=fileName;}public String getDENCRYPTOR_TEXT_FILE(){return DENCRYPTOR_TEXT_FILE;}public void setPassword(String password){this.password=password;}//create a RSA secretKeypublic static void createKey()throws Exception{KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(1024);KeyPair keyPair=keyPairGenerator.genKeyPair();//得到公钥的字节数组publicKeyBytes=keyPair.getPublic().getEncoded();//得到私钥byte[] privateKeyBytes=keyPair.getPrivate().getEncoded();byte[] encrytedPrivatekey=passwordEncrypt(password.toCharArray(),privateKeyBytes);FileOutputStream fos=new FileOutputStream(ENCRYPT_PRIVATEKEY_FILE);fos.write(encrytedPrivatekey);fos.close();}//通过给的口令加密私钥pri
|