²é¿´: 351  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

modigfkl

Ìú³æ (³õÈëÎÄ̳)


[×ÊÔ´] ¹ØÓÚDES¶Ô³Æ¼ÓÃܼ°²Î¿¼³ÌÐò

¶Ô³Æ¼ÓÃܵÄÔ­ÀíÊǼÓÃܺͽâÃÜʹÓõÄÊÇͬһ¸öÃÜÔ¿£¬ÓÃP±íʾÃ÷ÎÄ£¬K±íʾ¼ÓÃÜÃÜÔ¿£¬M±íʾ¼ÓÃÜËã·¨£¬E±íʾÃÜÎÄ£¬ÔòÓÐÈçϹæÔò³ÉÁ¢£º E = MK(P); P = MK(E);
¾ÍÊÇÃ÷ÎļÓÃÜÒÔºó³ÉΪÃÜÎÄ£¬ÃÜÎļÓÃÜÒÔºó³ÉΪÃ÷ÎÄ¡£
¸½¼þÊÇÒ»¸ö²åÈëÑÎÖµµÄ¶Ô³Æ¼ÓÃܵÄÔ´Îļþ£¬ÒÔÏÂÊÇÔÚ±¾È˼ÆËã»úÉϲÙ×÷ʵÀý£¬¹©²Î¿¼¡£
F:\>javac FileEncryptorDES.java ´´½¨ÃÜÔ¿£¬ÓÃÃÜÂëwuqingping¼ÓÃÜÃÜÔ¿
F:\>java FileEncryptorDES -c wuqingping ÕýÔÚ²úÉú DES ÃÜÔ¿...... ÃÜÔ¿²úÉúÍê±Ï£¡
F:\>dir *.bin Çý¶¯Æ÷ F ÖеľíÊÇ DATA ¾íµÄÐòÁкÅÊÇ 884F-8D43 F:\ µÄĿ¼ 2005-08-19 13:24 24 DESkey.bin 1 ¸öÎļþ 24 ×Ö½Ú 0 ¸öĿ¼ 3,076,030,464 ¿ÉÓÃ×Ö½Ú ÓÃÃÜÔ¿¼ÓÃÜÎļþ£¬
ÐèÒªÊäÈëÃÜÔ¿µÄ±£»¤ÃÜÂë F:\>java FileEncryptorDES -e wuqingping FileEncryptorDES.java FileEncryptorDES.java.en
ÕýÔÚ×°ÔØÃÜÔ¿..... ÒѾ­ÕýÈ·×°ÔØÃÜÔ¿£¡
ÕýÔÚ³õʼ»¯°²È«Ëæ»úÊý....... ³õʼ»¯Cipher...... ÕýÔÚ¼ÓÃÜÊäÈëµÄÖ¸¶¨Îļþ...... ÓÃÃÜÔ¿½âÃÜÎļþ£¬
ÐèÒªÊäÈëÃÜÔ¿µÄ±£»¤ÃÜÂë F:\>java FileEncryptorDES -d wuqingping FileEncryptorDES.java.en FileEncryptorDES.java.de
ÕýÔÚ×°ÔØÃÜÔ¿...... ÒѾ­ÕýÈ·×°ÔØÃÜÔ¿£¡
³õʼ»¯Cipher...... ÕýÔÚ½âÃÜÖ¸¶¨µÄÎļþ...... F:\>dir File*DES.* Çý¶¯Æ÷ F ÖеľíÊÇ DATA ¾íµÄÐòÁкÅÊÇ 884F-8D43
F:\ µÄĿ¼ 2005-08-19 13:23 5,326 FileEncryptorDES.java 2005-08-19 13:24 3,968 FileEncryptorDES.class 2005-08-19 13:25 5,328 FileEncryptorDES.java.en 2005-08-19 13:25 5,326 FileEncryptorDES.java.de 5 ¸öÎļþ
25,278 ×Ö½Ú 0 ¸öĿ¼ 3,075,981,312 ¿ÉÓÃ×Ö½Ú
ÊäÈë´íÎóµÄ±£»¤ÃÜÂëµÄÀý×Ó£¨¼´Ã»ÓÐȨÏÞʹÓøÃÃÜÔ¿£©£º

F:\>java FileEncryptorDES -e errorpass FileEncryptorDES.java FileEncryptorDES.java.en ÕýÔÚ×°ÔØÃÜÔ¿..... Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.SunJCE_h.b(DashoA6275) at com.sun.crypto.provider.SunJCE_h.b(DashoA6275)
at com.sun.crypto.provider.SunJCE_ae.b(DashoA6275)
atcom.sun.crypto.provider.PBEWithMD5AndDESCipher.engineDoFinal(DashoA6275)
at javax.crypto.Cipher.doFinal(DashoA12275)
at FileEncryptorDES.loadKey(FileEncryptorDES.java:97)
at FileEncryptorDES.encrypt(FileEncryptorDES.java:110)
at FileEncryptorDES.main(FileEncryptorDES.java:26)
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

modigfkl

Ìú³æ (³õÈëÎÄ̳)


Àý³Ì
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;
// ²ÉÓöԳƼÓÃÜ·½Ê½£¬Ê¹ÓÃ56λµÄDESÃÜÔ¿£¬ÃÜÔ¿ÎļþÒÔ¼ÓÃÜ·½Ê½±£´æÓÚ±¾µØÎļþϵͳ
public class FileEncryptorDES
{
private static String KEY_FILENAME="DESkey.bin"; //±£´æÔÚ±¾µØÎļþϵͳµÄÃÜÔ¿ÎļþÃû
private static int ITERATIONS=1000;
public static void main (String[] args) throws Exception
{
if ((args.length < 2) || (args.length > 4))
{
System.err.println("Usage: java FileEncryptorDES -c|-e|-d password [inputfile] [outputfile]"; System.exit(1);
} // °ÑÃÜÂë±£´æµ½Êý×éÖÐ

char[] password = new char[args[1].length()];
args[1].getChars(0, args[1].length(), password, 0);
if ("-c".equals(args[0])) createKey(password);
else if ("-e".equals(args[0])) encrypt(password, args[2], args[3]);
else if ("-d".equals(args[0])) decrypt(password, args[2], args[3]);
} //´´½¨56λDESÃÜÔ¿²¢±£´æÔÚÎļþϵͳÖУ¬ÎļþÃûΪ
$KEY_FILENAME private static void createKey(char[] password) throws Exception { System.out.println("ÕýÔÚ²úÉú DES ÃÜÔ¿......";
// ´´½¨ DES ÃÜÔ¿
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES";
keyGenerator.init(56);
Key key = keyGenerator.generateKey(); System.out.println("ÃÜÔ¿²úÉúÍê±Ï£¡"; // ÓÃÃÜÂë¼ÓÃÜÃÜÔ¿

byte[] salt = new byte[8]; SecureRandom random = new SecureRandom(); random.nextBytes(salt); // ´´½¨»ùÓÚÃÜÂëµÄ¼ÓÃÜ

PBEKeySpec pbeKeySpec = new PBEKeySpec(password);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES";
SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, ITERATIONS);
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES";
cipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec); // ÃÜÔ¿¼ÓÃÜ
byte[] encryptedKeyBytes = cipher.doFinal(key.getEncoded()); // °Ñ¼ÓÃÜÒÔºóµÄÃÜԿдÈëÎļþ
FileOutputStream fos = new FileOutputStream(KEY_FILENAME);
fos.write(salt); fos.write(encryptedKeyBytes);
fos.close();
} //´ÓÎļþϵͳÃÜÔ¿ÎļþÖÐÈ¡³öÃÜÔ¿
private static Key loadKey(char[] password) throws Exception
{
// ¶ÁÈ¡¼ÓÃܵÄÃÜÔ¿ÎļþµÄÄÚÈÝ
FileInputStream fis = new FileInputStream(KEY_FILENAME);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = 0;
while ((i=fis.read()) != -1) { baos.write(i); } fis.close();
byte[] saltAndKeyBytes = baos.toByteArray();
baos.close(); // ´Ó¿ªÊ¼µÄ8¸ö×Ö½Ú»ñÈ¡ÑÎÖµ
byte[] salt = new byte[8];
System.arraycopy(saltAndKeyBytes,0,salt,0,; // ¶ÁȡʣϵļÓÃܵÄÃÜÔ¿ÄÚÈÝ
int length = saltAndKeyBytes.length - 8; byte[] encryptedKeyBytes = new byte[length];
System.arraycopy(saltAndKeyBytes,8,encryptedKeyBytes,0,length); // ´´½¨»ùÓÚÃÜÂëµÄ¼ÓÃÜ
PBEKeySpec pbeKeySpec = new PBEKeySpec(password);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES";
SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, ITERATIONS);
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES";
cipher.init(Cipher.DECRYPT_MODE, pbeKey, pbeParamSpec); // ½âÃܼÓÃܵÄÃÜÔ¿
byte[] decryptedKeyBytes = cipher.doFinal(encryptedKeyBytes); // ´ÓÃÜÔ¿ÄÚÈÝÖл¹Ô­³öÃÜÔ¿²¢·µ»Ø
SecretKeySpec key = new SecretKeySpec(decryptedKeyBytes, "DES";
return key;
} //´ÓÎļþϵͳÖÐ×°ÔØDESÃÜÔ¿£¨ÐèÒª¸ø³öÕýÈ·µÄ±£»¤ÃÜÂ룩£¬²¢¼ÓÃÜÒ»¸öÎļþ

private static void encrypt(char[] password, String fileInput, String fileOutput) throws Exception {
System.out.println("ÕýÔÚ×°ÔØÃÜÔ¿.....";
Key key = loadKey(password); System.out.println("ÒѾ­ÕýÈ·×°ÔØÃÜÔ¿£¡";
// ´´½¨Cipher£¬²¢ÓÃ×°ÔØµÄÃÜÔ¿³õʼ»¯
Cipher cipher = Cipher.getInstance("DES";
System.out.println("ÕýÔÚ³õʼ»¯°²È«Ëæ»úÊý.......";
FileInputStream fis = new FileInputStream(fileInput);
FileOutputStream fos = new FileOutputStream(fileOutput);
System.out.println("³õʼ»¯Cipher......";
cipher.init(Cipher.ENCRYPT_MODE, key);
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
System.out.println("ÕýÔÚ¼ÓÃÜÊäÈëµÄÖ¸¶¨Îļþ......";
int theByte = 0; while ((theByte = fis.read()) != -1)
{
cos.write(theByte); } fis.close();
cos.close();
} //´ÓÎļþϵͳÖÐ×°ÔØDESÃÜÔ¿£¨ÐèÒª¸ø³öÕýÈ·µÄ±£»¤ÃÜÂ룩£¬²¢½âÃÜÏàÓ¦µÄÎļþ
private static void decrypt(char[] password, String fileInput, String fileOutput) throws Exception
{
System.out.println("ÕýÔÚ×°ÔØÃÜÔ¿......";
Key key = loadKey(password);
System.out.println("ÒѾ­ÕýÈ·×°ÔØÃÜÔ¿£¡"; // ´´½¨Cipher£¬²¢ÓÃ×°ÔØµÄÃÜÔ¿³õʼ»¯
Cipher cipher = Cipher.getInstance("DES";
FileInputStream fis = new FileInputStream(fileInput);
FileOutputStream fos = new FileOutputStream(fileOutput);
System.out.println("³õʼ»¯Cipher......";
cipher.init(Cipher.DECRYPT_MODE, key);
CipherInputStream cis = new CipherInputStream(fis, cipher);
System.out.println("ÕýÔÚ½âÃÜÖ¸¶¨µÄÎļþ......";
int theByte = 0;
while ((theByte = cis.read()) != -1)
{
fos.write(theByte); } cis.close(); fos.close();
}
}
2Â¥2006-12-13 18:16:42
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ modigfkl µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Ò»Ö¾Ô¸ÖØÇì´óѧ085700×ÊÔ´Óë»·¾³£¬×Ü·Ö308Çóµ÷¼Á +7 īīĮ 2026-03-23 8/400 2026-03-23 20:36 by Creta
[¿¼ÑÐ] ¹¤¿Æ0856Çóµ÷¼Á +5 ãåÎö͡͡ 2026-03-21 5/250 2026-03-23 17:56 by º£ÉªÞ±-
[¿¼ÑÐ] 08¹¤Ñ§µ÷¼Á +7 Óû§573181 2026-03-20 11/550 2026-03-23 15:47 by ÎÒ°®Ñ§Ï°Ñ§Ï°Ê¹Î
[¿¼ÑÐ] 350Çóµ÷¼Á +6 weudhdk 2026-03-19 6/300 2026-03-23 15:47 by tangyuan0840221
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷°²½»Í¨´óѧ²ÄÁϹ¤³Ìרҵ 282·ÖÇóµ÷¼Á +11 ·ãÇÅZL 2026-03-18 13/650 2026-03-22 20:26 by edmund7
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤085600£¬×Ü·Ö304£¬±¾¿ÆÓÐÁ½Æªsci²ÎÓ룬Çóµ÷¼Á +4 ÐÒÔ˵Ľ´½´ 2026-03-22 5/250 2026-03-22 20:15 by edmund7
[¿¼ÑÐ] Çóµ÷¼ÁÒ»Ö¾Ô¸º£´ó£¬0703»¯Ñ§Ñ§Ë¶304·Ö£¬Óдó´´ÏîÄ¿£¬Ëļ¶Òѹý +6 ÐÒÔËÁ¨Á¨ 2026-03-22 10/500 2026-03-22 20:10 by edmund7
[¿¼ÑÐ] 308Çóµ÷¼Á +3 īīĮ 2026-03-21 3/150 2026-03-22 16:54 by i_cooler
[¿¼ÑÐ] 0805 316Çóµ÷¼Á +3 ´óÑ©Éî²Ø 2026-03-18 3/150 2026-03-21 18:55 by ѧԱ8dgXkO
[¿¼ÑÐ] ÇóÖú +5 ÃÎÀïµÄÎÞÑÔ 2026-03-21 6/300 2026-03-21 17:51 by ѧԱ8dgXkO
[¿¼ÑÐ] Çóµ÷¼Á +3 .m.. 2026-03-21 4/200 2026-03-21 16:25 by barlinike
[¿¼ÑÐ] 279Çóµ÷¼Á +5 ºìÒÂÒþ¹Ù 2026-03-21 5/250 2026-03-21 14:59 by lature00
[¿¼ÑÐ] 265Çóµ÷¼Á +12 ÁºÁºÐ£Ð£ 2026-03-19 14/700 2026-03-21 13:38 by lature00
[¿¼ÑÐ] 085601µ÷¼Á 358·Ö +3 zzzzggh 2026-03-20 4/200 2026-03-21 10:21 by luoyongfeng
[¿¼ÑÐ] 332Çóµ÷¼Á +4 ydfyh 2026-03-17 4/200 2026-03-21 02:20 by JourneyLucky
[¿¼ÑÐ] 085700×ÊÔ´Óë»·¾³308Çóµ÷¼Á +12 īīĮ 2026-03-18 13/650 2026-03-21 01:42 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÖпƼ¼´óѧ£¬080502£¬354·ÖÇóµ÷¼Á +5 ÊØºòϦÑôCF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ Î÷±±´óѧ £¬070300»¯Ñ§Ñ§Ë¶£¬×Ü·Ö287£¬Ë«·ÇÒ»±¾£¬Çóµ÷¼Á¡£ +3 ³¿»èÏßÓëÐǺ£ 2026-03-18 3/150 2026-03-21 00:46 by JourneyLucky
[¿¼ÑÐ] 22408 344·Ö Çóµ÷¼Á Ò»Ö¾Ô¸ »ªµç¼ÆËã»ú¼¼Êõ +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤ 322Çóµ÷¼Á +4 È»11 2026-03-19 4/200 2026-03-20 22:12 by luoyongfeng
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û