日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:35日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线二区| 精品久久久久久久| 日韩精品电影| 日韩精品免费一区二区三区| 久久亚洲专区| 视频一区二区三区入口| 日本aⅴ免费视频一区二区三区| 国产精品探花在线观看| 国产亚洲人成a在线v网站| 国产精品日韩精品中文字幕| 国产一区二区三区亚洲| 欧美日韩水蜜桃| 日本大胆欧美人术艺术动态| 国产精品综合色区在线观看| av中文字幕在线观看第一页 | 色老板在线视频一区二区| 欧美午夜精彩| 亚洲专区视频| 国产一区二区三区黄网站 | 99国产精品免费视频观看| 国产精品社区| 国产精品一页| 亚洲婷婷免费| 欧美一区精品| 精品丝袜在线| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 国产精品igao视频网网址不卡日韩 | 精品中文字幕一区二区三区四区| 中文在线资源| 日韩中文字幕一区二区三区| 欧美激情三区| 99热精品在线观看| 麻豆国产精品| 首页亚洲欧美制服丝腿| 国产精品久久久久久久免费观看 | 日本欧美在线| 国产黄大片在线观看| 首页国产欧美久久| 精品视频在线一区二区在线| 久久蜜桃av| 国产精品日本一区二区不卡视频| 黑丝美女一区二区| 美女久久久精品| 人人精品人人爱| 91亚洲自偷观看高清| 日本不卡视频在线观看| 久久亚洲国产| 精品视频一二| 亚洲久久一区| 99国产成+人+综合+亚洲欧美| 国产精品网址| 中文字幕av一区二区三区人 | 国产精选一区| 日韩午夜免费| 中文字幕在线视频网站| 日韩一区二区三免费高清在线观看 | 国产一区二区精品| av综合电影网站| 国产精品男女| 免费观看在线综合| 色偷偷色偷偷色偷偷在线视频| 欧美在线91| 亚洲香蕉久久| 欧美精品一二| 日韩精品一区二区三区免费观看| 国产精品密蕾丝视频下载| 亚洲精品在线国产| 免费国产亚洲视频| 在线精品视频在线观看高清| 日韩欧美一区二区三区免费看| 国产精品视频一区二区三区四蜜臂| 国产视频欧美| 欧美手机在线| 亚洲播播91| 91日韩在线| 久久99蜜桃| 国产精品第十页| 日韩av电影一区| 日韩一区二区三免费高清在线观看| 影视先锋久久| 亚洲一级黄色| 久久九九精品| 亚洲午夜黄色| 米奇777超碰欧美日韩亚洲| 免费在线小视频| av中文资源在线资源免费观看| 麻豆国产欧美日韩综合精品二区| 国产精品香蕉| 欧美激情视频一区二区三区免费 | 国产日韩一区二区三区在线播放| 日韩精品一二三四| 玖玖玖国产精品| 久热re这里精品视频在线6| 国产精品嫩草99av在线| 免费av一区| 午夜精品网站| 亚洲一区二区三区高清不卡| 午夜在线播放视频欧美| 亚洲一二av| 18国产精品| 精品一区二区三区亚洲| caoporn视频在线| 久久香蕉国产| 丝瓜av网站精品一区二区| 亚洲日本在线观看视频| 欧美一区二区三区久久精品| 国产精品美女久久久久久不卡| 久久免费精品| 日韩欧美一区二区三区在线观看| 999国产精品| 黄色成人精品网站| 水蜜桃久久夜色精品一区的特点| 亚洲精品系列| 麻豆精品久久| 欧美亚洲国产一区| 亚洲欧美在线专区| 久久精品一区二区国产| 一区二区三区视频免费观看| 亚洲综合五月| 麻豆一区二区三| 亚洲成人二区| 日产欧产美韩系列久久99| 久久精品三级| 亚洲美洲欧洲综合国产一区| 人人精品久久| 国产精品黑丝在线播放| 中文欧美日韩| 国产精品中文| 亚洲二区免费| 日韩av一区二区三区四区| 国产66精品| 亚洲综合不卡| 国产精品久久久久久妇女 | 日韩黄色大片| 在线一区欧美| 国产精品亚洲人成在99www| 日韩av免费| 综合欧美亚洲| 另类综合日韩欧美亚洲| 国产字幕视频一区二区| 欧美一区精品| 九九久久电影| 国产精品宾馆| 亚洲国产一区二区三区在线播放| 日本亚洲最大的色成网站www| 97精品97| 日韩精品导航| 91精品精品| 欧美日韩夜夜| 国产亚洲毛片| 日韩一区自拍| 国产亚洲欧美日韩精品一区二区三区 | 99精品视频在线| 国产乱子精品一区二区在线观看| 999国产精品视频| 97成人超碰| 国精品一区二区三区| 欧美激情日韩| 亚洲深深色噜噜狠狠爱网站 | 亚洲v天堂v手机在线| 亚洲天堂资源| 国产日本亚洲| 蜜桃av一区二区| 99热精品久久| 久久久久亚洲精品中文字幕| 亚洲综合福利| 黄色日韩精品| 在线看片国产福利你懂的| 欧美亚洲国产日韩| 另类av一区二区| 在线日韩av| 国产伦久视频在线观看| 国产午夜精品一区在线观看| 亚洲一区免费| 91精品久久久久久久久久不卡| 欧美黑人做爰爽爽爽| 青青草国产精品亚洲专区无| 国产精品日本| 激情欧美一区| 亚洲综合电影| 精品99在线| 麻豆传媒一区二区三区| 三级亚洲高清视频| 国产一区二区三区自拍| 黑森林国产精品av| 国产黄色精品| 国产欧美日韩一级| 日韩欧美中文字幕一区二区三区 | 麻豆一区二区99久久久久| 日韩激情精品| 亚洲人妖在线| 亚洲视频国产精品| 丝袜亚洲另类欧美| 亚洲欧美日韩专区| 欧美高清一区| 欧美日韩国产综合网| 午夜国产欧美理论在线播放| 国产精品99免费看| 国产精品99免费看| 亚洲精品va|