📄 decrypt_kind.java
字号:
package decrypt;
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import javax.crypto.interfaces.*;
import java.security.*;
import java.security.interfaces.*;
import java.security.spec.*;
import java.math.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
public class decrypt_kind
{
public static void main(String args[]) throws Exception
{ }
public String de_RSA(String s)throws Exception
{
BigInteger c=new BigInteger(s);
FileInputStream Lfile=new FileInputStream("Skey_RSA_pri.dat");
ObjectInputStream ob=new ObjectInputStream(Lfile);
RSAPrivateKey pbk=(RSAPrivateKey)ob.readObject();
BigInteger d=pbk.getPrivateExponent();
BigInteger n=pbk.getModulus();
BigInteger m=c.modPow(d,n);
byte[]mt=m.toByteArray();
String returnstr=new String(mt,"UTF8");
return returnstr;
}
public String de_simpleness(int a,String s)throws Exception
{String returnstr=new String("");
for(int i=0;i<s.length();i++)
{char c=s.charAt(i);
c-=a;
returnstr+=c;
}
return returnstr;
}
public String de_PBE(String s)throws Exception
{
char[] passwd=s.toCharArray();
PBEKeySpec pbks=new PBEKeySpec(passwd);
SecretKeyFactory kf=SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey k=kf.generateSecret(pbks);
byte[]salt=new byte[8];
FileInputStream f=new FileInputStream("PBEEnc.dat");
f.read(salt);
int num=f.available();
byte[]ctext=new byte[num];
f.read(ctext);
Cipher cp=Cipher.getInstance("PBEWithMD5AndDES");
PBEParameterSpec ps=new PBEParameterSpec(salt,1000);
cp.init(Cipher.DECRYPT_MODE,k,ps);
byte ptext[]=cp.doFinal(ctext);
String returnstr=new String(ctext,"UTF8");
return returnstr;
}
public static String de_symmetry(String s)throws Exception//DESede对称密码,密钥为key1.dat,针对数组的解密。输入字符串,密文输出为字符串,可用中文
{
FileInputStream f=new FileInputStream("key1.dat");
ObjectInputStream b=new ObjectInputStream(f);
Key k=(Key)b.readObject();
Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE,k);
FileInputStream f2=new FileInputStream("DES.dat");
int num=f2.available();
byte[] ptext=new byte[num];
f2.read(ptext);
byte ctext[]=cp.doFinal(ptext);
String returnstr=new String(ctext,"UTF8");
return returnstr;
}
public String de_CBC(String s) throws Exception
{
FileInputStream f1=new FileInputStream("key1.dat");
ObjectInputStream b1=new ObjectInputStream(f1);
Key k=(Key)b1.readObject();
byte[] rand=new byte[8];
FileInputStream f2=new FileInputStream("CBC.dat");
f2.read(rand);
IvParameterSpec iv=new IvParameterSpec(rand);
int num=f2.available();
byte[] ptext=new byte[num];
f2.read(ptext);
Cipher cp=Cipher.getInstance("DESede/CBC/PKCS5Padding");
cp.init(Cipher.DECRYPT_MODE,k,iv);
//byte ptext[]=s.getBytes("UTF8");
byte ctext[]=cp.doFinal(ptext);
String returnstr=new String(ctext,"UTF8");
System.out.println(returnstr);
return returnstr;
}
public int de_file_symmetry(String s) throws Exception//文件DESede对称密码,密钥为key1.dat,针对数组的加密。输入字符串,密文输出为字符串,可用中文
{int file_end=s.indexOf(".");String f_end=new String(s.substring(0,file_end));
File f_del=new File(s);
FileInputStream f=new FileInputStream("key1.dat");
ObjectInputStream b=new ObjectInputStream(f);
Key k=(Key)b.readObject();
Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE,k);
FileInputStream in_file=new FileInputStream(s);
FileOutputStream out_file=new FileOutputStream(f_end+".txt");
CipherOutputStream cout=new CipherOutputStream(out_file,cp);
int is_read=0;
while((is_read=in_file.read())!=-1)
{cout.write(is_read);}
cout.close();out_file.close();in_file.close();System.out.println(""+f_del.delete());
return 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -