成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

一個用JAVA開發的會話密鑰程序

瀏覽:11日期:2024-07-01 08:33:56
內容: 出處 CN-JAVA原創:liufen//package /*運行本程序你需要下載JCE,Bouncy Castle的JCE with Provider and Lightweight API網止是 http://www.bouncycastle.org 配置如下:在WINDOWS中,你需要把下載的bcprov-jdk14-119.jar文件拷貝到兩個地方:一個在你安裝的JDK目錄中,比如說我的是C:j2sdk1.4.0-rcjrelibext另一個在你的JDK運行環境中,我的是在C:Program FilesJavaj2re1.4.0-rclibext;另外還要在對兩個java.security進行修改:我的在 C:j2sdk1.4.0-rcjrelibsecurityjava.security;C:Program FilesJavaj2re1.4.0-rclibsecurityjava.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();}//通過給的口令加密私鑰private static byte[] passwordEncrypt(char[] password,byte[] privateKeyBytes)throws Exception{//create 8 byte salt byte[] salt=new byte[8];Random random=new Random();random.nextBytes(salt);//create a PBE key and cipherPBEKeySpec keySpec=new PBEKeySpec(password);SecretKeyFactory keyFactory=SecretKeyFactory.getInstance('PBEWithSHAAndTwofish-CBC');SecretKey key=keyFactory.generateSecret(keySpec);PBEParameterSpec paramSpec=new PBEParameterSpec(salt,ITERATIONS);Cipher cipher=Cipher.getInstance('PBEWithSHAAndTwofish-CBC');cipher.init(Cipher.ENCRYPT_MODE,key,paramSpec);//Encrypt the byte[]byte[] cipherPriKey=cipher.doFinal(privateKeyBytes);//write out salt ,and then the cipherPriKeyByteArrayOutputStream baos=new ByteArrayOutputStream();baos.write(salt);baos.write(cipherPriKey);return baos.toByteArray();} //用會話密鑰加密給定的文件,然后用公鑰加密會話密鑰,并存入文件中//最后加密后的文件由密鑰長度+已加密的密鑰(會話密鑰)+密文public static void encrypt()throws Exception{//轉換成RSA密鑰X509EncodedKeySpec keySpec=new X509EncodedKeySpec(publicKeyBytes);KeyFactory keyFactory=KeyFactory.getInstance('RSA');PublicKey publickey=keyFactory.generatePublic(keySpec);//打開存貯密文的文件DataOutputStream output=new DataOutputStream(new FileOutputStream(ENCRPTOR_TEXT_FILE));//創建RSA的CIpherCipher rsaCipher=Cipher.getInstance('RSA/ECB/PKCS1Padding');rsaCipher.init(Cipher.ENCRYPT_MODE,publickey);//創建會話密鑰(Rijndael)KeyGenerator rijndaelKeyGenerator=KeyGenerator.getInstance('Rijndael');rijndaelKeyGenerator.init(256);Key rijndaelKey=rijndaelKeyGenerator.generateKey();//公鑰加密會話密鑰 byte[] encodedKeyBytes=rsaCipher.doFinal(rijndaelKey.getEncoded());output.writeInt(encodedKeyBytes.length);output.write(encodedKeyBytes);//產生IV向量SecureRandom random=new SecureRandom();byte[] iv=new byte[16];random.nextBytes(iv);output.write(iv);//加密正文IvParameterSpec spec=new IvParameterSpec(iv);Cipher symmetricCipher=Cipher.getInstance('Rijndael/CBC/PKCS5Padding');symmetricCipher.init(Cipher.ENCRYPT_MODE,rijndaelKey,spec);CipherOutputStream cos=new CipherOutputStream(output,symmetricCipher);FileInputStream input=new FileInputStream(TEXT_FILE);int theByte=0;while((theByte=input.read())!=-1){cos.write(theByte);}input.close();cos.close();return;}//得到私鑰private static byte[] passwordDecrypt(char[] password,byte[] ciphertext)throws Exception{byte[] salt=new byte[8];ByteArrayInputStream bais=new ByteArrayInputStream(ciphertext);bais.read(salt,0,8);byte[] remainingCiphertext=new byte[ciphertext.length-8];bais.read(remainingCiphertext,0,ciphertext.length-8);PBEKeySpec keySpec=new PBEKeySpec(password);SecretKeyFactory keyFactory=SecretKeyFactory.getInstance('PBEWithSHAAndTwofish-CBC');SecretKey key=keyFactory.generateSecret(keySpec);PBEParameterSpec paramSpec=new PBEParameterSpec(salt,ITERATIONS);Cipher cipher=Cipher.getInstance('PBEWithSHAAndTwofish-CBC');cipher.init(Cipher.DECRYPT_MODE,key,paramSpec);return cipher.doFinal(remainingCiphertext);}//解密加密的文件 public static void decrypt()throws Exception{FileInputStream fis=new FileInputStream(ENCRYPT_PRIVATEKEY_FILE);ByteArrayOutputStream baos=new ByteArrayOutputStream();int theByte=0;while((theByte=fis.read())!=-1){baos.write(theByte);}fis.close();//得到被加密的私鑰byte[] keyBytes=baos.toByteArray();baos.close();//得到私鑰byte[] sKey=passwordDecrypt(password.toCharArray(),keyBytes);//產生RSA私鑰PKCS8EncodedKeySpec keySpec=new PKCS8EncodedKeySpec(sKey);KeyFactory keyFactory=KeyFactory.getInstance('RSA');PrivateKey privateKey=keyFactory.generatePrivate(keySpec);Cipher rsaCipher=Cipher.getInstance('RSA/ECB/PKCS1Padding');DataInputStream dis=new DataInputStream(new FileInputStream(ENCRPTOR_TEXT_FILE));//讀密文中密碼長度和密碼 byte[] encryptedKeyBytes=new byte[dis.readInt()];dis.readFully(encryptedKeyBytes);rsaCipher.init(Cipher.DECRYPT_MODE,privateKey);byte[] rijdaelKeyBytes=rsaCipher.doFinal(encryptedKeyBytes);//得到會話密鑰SecretKey rijndaelKey=new SecretKeySpec(rijdaelKeyBytes,'Rijndael');byte[] iv=new byte[16];dis.read(iv);IvParameterSpec spec=new IvParameterSpec(iv);//用會話密鑰解密正文Cipher cipher=Cipher.getInstance('Rijndael/CBC/PKCS5Padding');cipher.init(Cipher.DECRYPT_MODE,rijndaelKey,spec);CipherInputStream cis=new CipherInputStream(dis,cipher);FileOutputStream fos=new FileOutputStream(DENCRYPTOR_TEXT_FILE);theByte=0;while((theByte=cis.read())!=-1){fos.write(theByte);}cis.close();fos.close();return;}public static void main(String[] args)throws Exception{createKey();encrypt();decrypt();}} Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品mm| 亚洲成精国产精品女| 亚洲一区二区精品视频| 在线观看视频日韩| 久久久久国产精品厨房| av在线不卡免费看| 精品区一区二区| 国产v日产∨综合v精品视频| 欧美一区二区高清| 国产精品一区久久久久| 在线成人av网站| 国产精品综合二区| 91黄视频在线| 日本欧美在线看| 欧洲亚洲国产日韩| 九一久久久久久| 91精品国产入口| 成人免费视频免费观看| 久久亚洲精华国产精华液 | 欧美在线网址| 一本色道久久综合亚洲精品不卡| 玉米视频成人免费看| 99精品视频免费| 亚洲成av人片在线| 一本久道中文字幕精品亚洲嫩 | 精品无码三级在线观看视频| 欧美精品一二三| 国产精品77777竹菊影视小说| 欧美精品亚洲一区二区在线播放| 成人丝袜18视频在线观看| 久久精品欧美一区二区三区麻豆| 国产精品无人区| 伊人天天综合| 亚洲影院久久精品| 91激情五月电影| 国产成人亚洲综合a∨猫咪| 欧美videos大乳护士334| 欧美精品自拍| 亚洲最新视频在线播放| 色偷偷88欧美精品久久久| 韩国精品主播一区二区在线观看| 91精选在线观看| 波多野结衣精品在线| 国产精品久久久久久久第一福利 | 欧美福利视频导航| 99久久免费视频.com| 中文字幕欧美三区| 国产精品日本| 激情综合五月天| 26uuu精品一区二区在线观看| 欧美日韩精品免费观看| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧美国产不卡| 蜜臀av性久久久久蜜臀av麻豆| 在线播放中文字幕一区| 99精品欧美一区二区蜜桃免费 | 亚洲国产高清一区二区三区| 亚洲成人福利片| 欧美一级生活片| 亚洲国产精品久久久久久女王| 午夜久久久久久久久| 91精品国产综合久久久久久久久久| 91啦中文在线观看| 亚洲午夜激情网站| 欧美一区二区三区免费视频| 欧美日韩国产在线一区| 午夜精品一区二区三区免费视频| 欧美一二三区精品| 在线观看成人av| 精品制服美女久久| 国产精品乱人伦| 欧美亚洲一区二区在线观看| 欧美在线视频二区| 日韩黄色一级片| 久久久久国产免费免费| 亚洲一区精彩视频| 成人自拍视频在线观看| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩国产中文| 亚洲丰满在线| 国产露脸91国语对白| 中文字幕亚洲在| 欧美理论电影在线| 亚洲美女网站| 成人午夜伦理影院| 亚洲午夜三级在线| 久久一区二区视频| 91国在线观看| 一区免费在线| 成人黄色国产精品网站大全在线免费观看 | 蜜臀av在线播放一区二区三区| 精品国一区二区三区| 国产精品外国| 99精品国产视频| 欧美a级一区二区| 国产精品美日韩| 69av一区二区三区| 国产精品日韩| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美一区二区福利在线| 日韩视频一区二区三区在线播放免费观看| 国产一区二区0| 亚洲香蕉伊在人在线观| 久久久久久久综合| 欧美日韩一区二区在线观看| 在线欧美亚洲| 99国产一区二区三精品乱码| 久久精品免费看| 亚洲精品少妇30p| 精品成人在线观看| 欧美亚洲图片小说| 亚洲免费不卡| 欧美一区二区在线| 国产一区二区三区四区五区入口 | 色综合天天综合网天天狠天天| 奇米777欧美一区二区| 亚洲色图视频网站| 久久综合久久综合久久综合| 欧美视频一区在线观看| 国产欧美日韩| 欧美午夜视频| av男人天堂一区| 精品一区二区三区免费视频| 一区二区成人在线观看| 2023国产精华国产精品| 欧美日韩成人综合| 久久一区激情| 国产一区二区三区成人欧美日韩在线观看 | 国产综合亚洲精品一区二| 高清国产一区二区| 美女免费视频一区二区| 亚洲最大色网站| 中文在线免费一区三区高中清不卡| 91麻豆精品国产自产在线观看一区| 久久亚洲图片| 国产日韩一区欧美| 亚洲视频欧美在线| 欧美日本中文| 99麻豆久久久国产精品免费优播| 国产自产2019最新不卡| 日本网站在线观看一区二区三区| 亚洲免费看黄网站| 中文字幕一区二区三区四区不卡 | 亚洲成人一区二区| 最新国产成人在线观看| 国产亚洲欧美中文| 久久综合av免费| 日韩精品中午字幕| 欧美丰满少妇xxxxx高潮对白| 色8久久精品久久久久久蜜| 亚洲欧美日韩国产| 国产精品视区| 亚洲主播在线| 亚洲综合视频一区| 亚洲欧美日韩精品久久久| 亚洲福利专区| 精品成人一区| 欧美日韩亚洲一区二区三区在线| 99国产精品国产精品毛片| 成人免费高清在线观看| 高清在线成人网| 粉嫩一区二区三区性色av| 国产露脸91国语对白| 国产剧情一区二区三区| 国产麻豆欧美日韩一区| 国产精品1024| 国产成人精品亚洲777人妖| 国产成人免费视频网站 | 国产精品毛片在线看| 国内久久精品| 国产在线一区二区三区四区| 欧美三级网页| 黄色免费成人| 亚洲精品三级| 亚洲在线播放电影| 久久精品网址| 日本丶国产丶欧美色综合| 在线中文字幕一区二区| 欧美日韩在线播放一区| 欧美三级电影在线观看| 3d成人h动漫网站入口| 日韩一区二区三区四区| 精品国产青草久久久久福利| 久久久久久久久蜜桃| 国产视频一区二区三区在线观看 | 精品国产一二三| 久久综合九色综合久久久精品综合 | 久久精品女人| 欧美影院精品一区| 欧美日韩精品免费观看视频| 欧美精品高清视频| 日韩免费观看高清完整版在线观看| 欧美xxxxxxxxx| 国产免费成人在线视频| 亚洲色图在线看| 丝袜亚洲精品中文字幕一区| 麻豆国产精品一区二区三区| 国产一区二区0| 欧美在线视频二区| 国产欧美高清|