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

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

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

瀏覽:38日期: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久久,三上悠亚国产精品一区二区三区
日韩欧美在线中字| 国户精品久久久久久久久久久不卡| 免费观看久久av| 日韩精选在线| 97视频热人人精品免费| 国内自拍视频一区二区三区| 尹人成人综合网| 国产日韩一区二区三区在线播放| 九色porny丨国产首页在线| 久久av网址| 爽好久久久欧美精品| 999国产精品999久久久久久| 国产精品一区二区三区美女 | 日韩精品国产欧美| 久久不射中文字幕| 日韩欧美一区二区三区在线视频 | 日韩免费精品| 男女激情视频一区| 蜜桃一区二区三区在线| 在线看片不卡| 黄色免费成人| 久久aⅴ国产紧身牛仔裤| av不卡免费看| 五月激激激综合网色播| 国产农村妇女精品一二区| 蜜臀av免费一区二区三区| 久久精品亚洲人成影院| 日韩精品91| 欧美一级专区| 久久精品超碰| 91免费精品| 欧美一级专区| 国产精品密蕾丝视频下载| 麻豆精品视频在线| 在线视频观看日韩| 91高清一区| 日韩av中文在线观看| 国产中文字幕一区二区三区| 欧美在线亚洲| 日韩精品中文字幕一区二区| 国产一区福利| 美女精品在线观看| 久久三级中文| 午夜国产精品视频| 久久精品99国产国产精| 亚洲91精品| 国产福利亚洲| 午夜亚洲一区| 都市激情国产精品| 免费久久99精品国产自在现线| 国产精品久久久久9999高清| 伊人精品一区| 老鸭窝一区二区久久精品| 亚洲免费影视| 久久精品国产一区二区| 国产精品婷婷| 日韩深夜视频| 久久gogo国模啪啪裸体| 综合亚洲视频| 欧美另类专区| 国产h片在线观看| 国产欧美啪啪| 日韩 欧美一区二区三区| 国产99精品一区| 国产一二在线播放| 久久男人av| 久久久久久亚洲精品美女| 黑丝一区二区| 欧美午夜精品一区二区三区电影| 欧美日韩国产高清电影| 岛国av在线网站| 亚洲不卡系列| 欧美日韩国产在线一区| 五月天综合网站| 蜜桃一区二区三区在线| 青青草国产成人99久久| 国产精品毛片久久久| 精品在线网站观看| 久久精选视频| 免费人成网站在线观看欧美高清| 欧美专区在线| 国产精品日韩精品在线播放| 欧美激情网址| 日韩三区在线| 欧美丝袜一区| 日本亚洲视频在线| 麻豆精品久久| 午夜av一区| 国产精品乱战久久久| 婷婷综合六月| 欧美精品观看| 中日韩男男gay无套| 国产精品久久久久久久久久白浆| 色综合五月天| 亚洲tv在线| 欧洲在线一区| 国产精品久久久亚洲一区| 久久国产亚洲| 91精品国产自产观看在线| 99在线观看免费视频精品观看| 国产精品v一区二区三区| 久久最新视频| 91精品99| 久久天堂成人| 超碰在线99| 国产日韩三级| 免费在线成人网| 99久久99视频只有精品| 免费在线日韩av| 91精品福利观看| 伊人久久大香线蕉av超碰演员| 国产精品久久| 国产亚洲欧美日韩精品一区二区三区 | 久久www成人_看片免费不卡| 国产一区二区三区亚洲综合| 97久久超碰| 欧美日韩国产一区二区三区不卡| 国产欧美综合一区二区三区| 欧美综合国产| 亚洲精品午夜av福利久久蜜桃| 国产一区二区亚洲| 国产精品麻豆成人av电影艾秋| 天海翼精品一区二区三区| 日韩一区二区三区免费| 久久只有精品| 国产精品高清一区二区| 欧美一级一区| 日韩美女国产精品| 日韩福利在线观看| 日本综合精品一区| 久久激情五月婷婷| 国产情侣久久| 高清av一区| 久久黄色影院| 在线亚洲自拍| 日本成人精品| 精品72久久久久中文字幕| 国产精品视频3p| 日韩激情视频网站| 久久精品国产亚洲一区二区三区| 国产激情综合| 成人日韩av| 激情综合网五月| 视频一区二区国产| 欧美视频久久| 久久精品五月| 99久久亚洲精品蜜臀| 亚洲在线国产日韩欧美| 日韩福利在线观看| 国产成人免费视频网站视频社区| 激情视频一区二区三区| 亚洲免费观看高清完整版在线观| 国产乱论精品| 国产一区调教| 免费精品视频| 欧美国产极品| 日韩视频不卡| 国产精品网址| 伊人影院久久| 国产精品xxxav免费视频| 啪啪国产精品| 国产精品一区亚洲| 夜夜嗨一区二区| 美腿丝袜亚洲一区| 在线精品亚洲| 色偷偷色偷偷色偷偷在线视频| 亚洲欧美日韩国产一区| 成人在线黄色| 欧美亚洲国产激情| 日本午夜精品一区二区三区电影| 成人台湾亚洲精品一区二区| 久久亚洲风情| 日韩国产在线| 美女国产一区二区三区| 亚洲字幕久久| 欧美中文一区二区| 精品一区二区三区四区五区| 在线精品福利| 午夜久久美女| 日韩电影免费网址| 国产精品久久久久av蜜臀| 欧美综合二区| 不卡视频在线| 精品一级视频| 国产精品一区二区99| 免费在线观看视频一区| 亚洲精品一二三区区别| 免费看av不卡| 国产一区二区三区四区大秀| 国产精品一区高清| 欧美一级二区| 欧美午夜三级| 日韩精品中文字幕一区二区| 亚洲一区有码| 亚洲午夜久久| 亚洲精品亚洲人成在线观看| 日韩在线播放一区二区| 中文久久精品| 999国产精品| 西西人体一区二区|