⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ras_encrypt_decrypt.java

📁 一个对字串进行RAS方式加密的代码。 用于加密用户密码等敏感资料。 可以通过JSP页面进行调用
💻 JAVA
字号:
package eise.tools;//------------------------------------------------------------------------------/** * <p>Title: EISE加密程序</p> * <p>Description: 采用RSA算法加密一个字串</p> * <p>Copyright: Copyright (c) 2005-2006 By EISE Development Team</p> * <p>Company: EISE Development Team</p> * @author Zhan Hongfei * @version 1.0 *///------------------------------------------------------------------------------import java.math.*;import javax.swing.*;//------------------------------------------------------------------------------public class RAS_Encrypt_Decrypt extends JFrame {  private static String P="229";//一定要是素数,由用户指定  private static String Q="197";//一定要是素数,由用户指定  private String PQ="-1";//由PQ计算得到  private String EDM="-1";//由PQ计算得到  private String M="-1";//由PQ计算得到//-----上面参数只是计算用的,下面的参数是加密与解决要用的--------------------------------  private String E="-1";//由PQ计算得到  private String D="-1";//由PQ计算得到  private String N="-1";//由PQ计算得到//------------------------------------------------------------------------------  public RAS_Encrypt_Decrypt(){  this(P,Q); }//------------------------------------------------------------------------------  public RAS_Encrypt_Decrypt(String p,String q){     P=p;Q=q;     java.math.BigInteger biginteger = new BigInteger("1");     java.math.BigInteger biginteger1 = new BigInteger(p);     java.math.BigInteger biginteger3 = new BigInteger(q);     java.math.BigInteger n_biginteger = biginteger1.multiply(biginteger3);     java.math.BigInteger biginteger5 = biginteger1.subtract(biginteger);     java.math.BigInteger biginteger7 = biginteger3.subtract(biginteger);     java.math.BigInteger pq_biginteger = biginteger5.multiply(biginteger7);     if(!biginteger1.isProbablePrime(10)){return;}     if(!biginteger3.isProbablePrime(10)){return;}     N=n_biginteger.toString();     PQ=pq_biginteger.toString();     java.math.BigInteger biginteger15 = biginteger.add(biginteger);     java.math.BigInteger biginteger16 = biginteger.add(biginteger);     for(java.math.BigInteger biginteger17=new BigInteger("0"); biginteger15.compareTo(n_biginteger)<0&&biginteger17.intValue()!=1;biginteger17=pq_biginteger.gcd(biginteger15)){biginteger15 = biginteger15.add(biginteger);}     biginteger16 = biginteger15;     E=biginteger16.toString();     java.math.BigInteger biginteger19 = biginteger16.modInverse(pq_biginteger);     D=biginteger19.toString();     java.math.BigInteger biginteger21 = biginteger16.multiply(biginteger19);     biginteger21 = biginteger21.subtract(biginteger);     EDM=biginteger21.toString();  }//------------------------------------------------------------------------------ public String encryptString(String text){     String characternumbers="";//被加密的文字的整形表示码,每个字符的编码之间用空格分隔     String characterbinary="";//被加密的文字的字节码,每个字符的编码之间用空格分隔     String codeblocks="";     String s8="";////被加密的文字的字节码,每个字符的编码之间无空格     String encryptednumbers="";//被加密后的字节码,每个字符的编码之间用空格分隔     String encryptedmessage="";//被加密后的文字     String binaryblocks="";     java.math.BigInteger e_biginteger = new BigInteger(E);     java.math.BigInteger n_biginteger = new BigInteger(N);     int k=0;     byte byte0=2;     for(int i=0;i<text.length();i++)        {java.lang.String s6=text.substring(i,i+1);         //-----拿到一个个的字符--------------------------------------------         char c=text.charAt(i);         //-----把字符转化为字节--------------------------------------------         java.lang.String s=java.lang.Integer.toBinaryString(c);          //-----不够8位的补到8位-------------------------------------------         for(int l=s.length();l<8;l++){s="0"+s;}         java.lang.String s5 = (new Integer(c)).toString();         characternumbers=characternumbers+s5+"  ";         characterbinary=characterbinary+s+"  ";         s8=s8+s;         k++;         if(k==byte0)           {java.math.BigInteger biginteger10=new BigInteger(s8,2);            codeblocks=codeblocks+biginteger10.toString()+"  ";            java.math.BigInteger biginteger13=biginteger10.modPow(e_biginteger, n_biginteger);            java.lang.String s2=biginteger13.toString();            encryptednumbers=encryptednumbers+s2+" ";            for(int i1=0;i1<s2.length();i1+=2)               {byte byte1;                if(s2.length()-i1 > 1){byte1 = 2;}                else{byte1 = 1;}                java.lang.Integer integer = new Integer(s2.substring(i1, i1 + byte1));                char c1 = (char)integer.intValue();                encryptedmessage=encryptedmessage+c1;               }            k = 0;            s8 = "";           }         }     if(k>0&&k<byte0)       {for(int j1 = k; j1 < byte0; j1++)        s8 = "00000000" + s8;        binaryblocks=binaryblocks+s8+"  ";        java.math.BigInteger biginteger11 = new BigInteger(s8, 2);        codeblocks=codeblocks+biginteger11+"  ";        java.math.BigInteger biginteger14 = biginteger11.modPow(e_biginteger, n_biginteger);        java.lang.String s3 = biginteger14.toString();        encryptednumbers=encryptednumbers+s3+" ";        for(int k1 = 0; k1 < s3.length(); k1 += 2)           {byte byte2;            if(s3.length()-k1>1){byte2 = 2;}            else{byte2 = 1;}            java.lang.Integer integer1 = new Integer(s3.substring(k1, k1 + byte2));            char c2 = (char)integer1.intValue();            encryptedmessage=encryptedmessage+c2;           }        }     return encryptednumbers;  }//------------------------------------------------------------------------------  public String decryptString(String text){    String numberstodecrypt="";    String decryptednumbers="";    String decryptedmessage="";    java.math.BigInteger biginteger2 = new BigInteger(D);    java.math.BigInteger biginteger4 = new BigInteger(N);    java.lang.String s11=text;    int i2;    for(int j=0;j<s11.length();j=i2+1)       {int l1 = j;        i2 = s11.indexOf(' ', j);        java.lang.String s9 = s11.substring(l1, i2);        java.math.BigInteger biginteger18 = new BigInteger(s9, 10);        numberstodecrypt=numberstodecrypt+biginteger18.toString()+" ";        java.math.BigInteger biginteger20 = biginteger18.modPow(biginteger2, biginteger4);        java.lang.String s4 = biginteger20.toString();        decryptednumbers=decryptednumbers+s4+" ";        java.lang.String s1 = java.lang.Integer.toBinaryString(biginteger20.intValue());        for(int j2=s1.length();j2<16;j2++){s1="0"+s1;}        decryptednumbers=decryptednumbers+"'"+s1+"' ";        for(int k2=1;k2<=2;k2++)           {java.lang.String s10 = s1.substring((k2 - 1) * 8, k2 * 8);            if(!s10.equals("00000000"))              {java.math.BigInteger biginteger22 = new BigInteger(s10, 2);               int l2 = biginteger22.intValue();               char c3 = (char)l2;               decryptedmessage=decryptedmessage+c3;              }           }       }    return decryptedmessage;  }//------------------------------------------------------------------------------  public static void main(String[] args){   RAS_Encrypt_Decrypt machine=new RAS_Encrypt_Decrypt("229","197");   String text="the Hong kong Polytechnic University and Zhejiang University.";   String encrypted_text=machine.encryptString(text);   String decrypt_text=machine.decryptString(encrypted_text);   System.out.println("original_text="+text);   System.out.println("encrypted__text="+encrypted_text);   System.out.println("decrypt__text="+decrypt_text);  }//------------------------------------------------------------------------------}//end of class//------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -