文本文件中的密码的加密解密 想把一个字符串加密后存储在文本文件中,还想从文文中读取出该字符串进行解密,使用JDK中自带的包,如何能够实现?请指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【raine13】截止到2008-06-27 09:00:52的历史汇总数据(不包括此帖):发帖数:12 发帖分:240 结贴数:11 结贴分:220 未结数:1 未结分:20 结贴率:91.67 % 结分率:91.67 % 值得尊敬 应该采用 base64 编码。 用Java实现DES、RC2或者Rijndael用javax.crypto.Cipherhttp://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/index.html给你个例子:import javax.crypto.*;import javax.crypto.spec.*;import sun.misc.*;import java.security.*;import com.sun.crypto.provider.*;public class MyDESTest{ public static String doEncrypt(String key,String plainText) throws Exception{ Provider sunJce = new com.sun.crypto.provider.SunJCE(); Security.addProvider(sunJce); Cipher c = Cipher.getInstance("DES"); SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DES"); DESKeySpec keySpec = new DESKeySpec(key.getBytes()); SecretKey secKey = keyFac.generateSecret(keySpec); c.init(Cipher.ENCRYPT_MODE,secKey); byte[] b = c.doFinal(plainText.getBytes()); return new sun.misc.BASE64Encoder().encode(b); } public static String doDecrypt(String key,String cipherText) throws Exception{ Provider sunJce = new com.sun.crypto.provider.SunJCE(); Security.addProvider(sunJce); Cipher c = Cipher.getInstance("DES"); SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DES"); DESKeySpec keySpec = new DESKeySpec(key.getBytes()); SecretKey secKey = keyFac.generateSecret(keySpec); byte[] b = new sun.misc.BASE64Decoder().decodeBuffer(cipherText); c.init(Cipher.DECRYPT_MODE,secKey); return new String(c.doFinal(b)); } public static void main(String[] args){ String key = "abcd1234"; String source = "1234567812345678"; String destination = null; try { System.out.println( "source: " + source ); destination = doEncrypt(key, source); System.out.println( "destination: " + destination ); String decrypted = doDecrypt(key, destination); System.out.println( "decrypted: " + decrypted ); } catch(Exception e){} }}执行结果:[code=BatchFile]MyHost:/cygdrive/d/temp> java -cp . MyDESTestsource: 1234567812345678destination: Su2cgmLhJjFK7ZyCYuEmMS0ZxLNK7pNJdecrypted: 1234567812345678[/code] 为什么代码中尽量少出现"123".equals(str)这样的危险字符??? 如何实现java编辑器的查找和替换功能?(急用) 长度不确定时为什么要用stringbuffer类 模拟物理运动,懂得进 Scanner输入问题 有没有参见过中兴集团的笔试的兄弟(在北京的,白石桥那的那个) 格式转换,怎样将"23.546"转换成float 23.55 ? 请问一个取随机数的问题,即时结帖 一个response问题 timer怎么用呀. 请问如何用jfreechart画出附件中的图啊? 为什么我不配置classpath一样可以跑起来呢?
楼主【raine13】截止到2008-06-27 09:00:52的历史汇总数据(不包括此帖):
发帖数:12 发帖分:240
结贴数:11 结贴分:220
未结数:1 未结分:20
结贴率:91.67 % 结分率:91.67 %
值得尊敬
http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/index.html给你个例子:import javax.crypto.*;
import javax.crypto.spec.*;
import sun.misc.*;
import java.security.*;
import com.sun.crypto.provider.*;public class MyDESTest{ public static String doEncrypt(String key,String plainText) throws Exception{
Provider sunJce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunJce); Cipher c = Cipher.getInstance("DES");
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKey secKey = keyFac.generateSecret(keySpec); c.init(Cipher.ENCRYPT_MODE,secKey);
byte[] b = c.doFinal(plainText.getBytes());
return new sun.misc.BASE64Encoder().encode(b);
} public static String doDecrypt(String key,String cipherText) throws Exception{ Provider sunJce = new com.sun.crypto.provider.SunJCE();
Security.addProvider(sunJce); Cipher c = Cipher.getInstance("DES");
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKey secKey = keyFac.generateSecret(keySpec); byte[] b = new sun.misc.BASE64Decoder().decodeBuffer(cipherText);
c.init(Cipher.DECRYPT_MODE,secKey);
return new String(c.doFinal(b));
} public static void main(String[] args){ String key = "abcd1234";
String source = "1234567812345678";
String destination = null; try {
System.out.println( "source: " + source ); destination = doEncrypt(key, source);
System.out.println( "destination: " + destination ); String decrypted = doDecrypt(key, destination);
System.out.println( "decrypted: " + decrypted );
}
catch(Exception e){} }
}
执行结果:
[code=BatchFile]MyHost:/cygdrive/d/temp> java -cp . MyDESTest
source: 1234567812345678
destination: Su2cgmLhJjFK7ZyCYuEmMS0ZxLNK7pNJ
decrypted: 1234567812345678[/code]