Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

自己实现的一个加密算法

/*

 * Encrypt 字符串加密
 *
 * @author shiwei 2004-8-28
 */

package com.snoics.base.util;
/**
 * Encrypt 字符串加密
 * @author shiwei
 *
 */
public class Encrypt {

    public Encrypt() {

    }

    /**
     * 加密字符串
     * @param encryptstring
     * @return String
     */
    public static String encrypt(String encryptstring){
     String newstring="";
     if(encryptstring.length()<1){
      return encryptstring;
     }else{
      String tempstring=StringClass.remove(encryptstring,0,(int)(encryptstring.length()/3));
      tempstring=StringClass.getConvertString(tempstring);
      encryptstring=StringClass.getConvertString(encryptstring);
      newstring=encrypt(encryptstring,tempstring);
      return newstring;
     }
    }
   
    /**
     * 普通加密字符串
     *
     * @param encryptstring1
     * @param encryptstring2
     * @return String
     */
    public static String encrypt(String encryptstring1, String encryptstring2) {
        int strcount = 0; //字符串ASCII码的总和
        int newpasswordlength = 0; //生成的密码长度
        int seed1 = 0; //种子
        int seed2 = 0;
        String str = "";
        String newpassword = ""; //生成的密码
        char newchar;
        int newcharint = 0;
        int thechar = 0;

        str = encryptstring2 + encryptstring1;

        if (str.length() > 0) {
            for (int i = 0; i < str.length(); i++) {
                strcount = strcount + str.charAt(i);
            }

            newpasswordlength = (strcount * strcount) / str.length() + str.length();

            int temp = 0;
            int temp2 = 0;
            while ((newpasswordlength <= 0) || (newpasswordlength > 100)) {
                temp = temp + str.length();
                temp2 = temp + temp2;
                newpasswordlength = 100;
            }

            for (int i = 0; i < encryptstring1.length(); i++) {
                seed1 = seed1 + encryptstring1.charAt(i);
            }
            for (int i = 0; i < encryptstring2.length(); i++) {
                seed2 = seed2 + encryptstring2.charAt(i);
            }

            for (int i = 0; i < newpasswordlength; i++) {

                if (i < str.length()) {
                    thechar = str.charAt(i);
                } else {
                    thechar = str.charAt(i % (str.length() - 1))
                            + str.charAt((str.length() - 1)
                                    - (i % str.length()));
                }
                newcharint = thechar * (seed1 * (i + 1) + thechar);
                newcharint = newString(newcharint);
                newcharint = thechar * (seed2 * (i + 1) + thechar);
                newcharint = newString(newcharint);
                newchar = (char) newcharint;
                newpassword = newpassword + String.valueOf(newchar);
            }
            newpassword = newpassword.substring((encryptstring2.length() + encryptstring1.length()) % 100);
            return (newpassword);
        } else {
            return ("空字符串不能被加密");
        }
    }

    private static int newString(int charint) {
        while ((charint > 127) || (charint < 32)) {
            while (charint > 127) {
                charint = (charint - charint/2+1) / 2;
                while(charint==60||charint==62||charint==34||charint==32||charint==39){
                 charint = charint + 1;
                }
            }
            while (charint < 32) {
                charint = (charint + charint/2-1) * 2;
                while(charint==60||charint==62||charint==34||charint==32||charint==39){
                 charint = charint + 1;
                }
            }
        }
        return (charint);
    }

    public static void main(String[] args) {
        String theusername = "1abc1";
        String thepassword = "1def1";
        String theusername1 = "1def1";
        String thepassword1 = "1abc1";
        String newstring=Encrypt.encrypt(theusername,thepassword);
        System.out.println("newstring="+newstring);
        String newstringa=Encrypt.encrypt(theusername1,thepassword1);
        System.out.println("newstringa="+newstringa);
        String newstring2=Encrypt.encrypt(newstring);
        System.out.println("newstring2="+newstring2);
        String newstring3=Encrypt.encrypt(newstring2);
        System.out.println("newstring3="+newstring3);
    }

}


执行结果:

newstring=*?C4%;V[GKOoUX[_#i%ptvy)!!#01&c(46*o;=?y{?AB#4HI7%7LM:==U?@?AXBZFGHH`IJKfgO4QlmR7qrt::wxz=
newstringa=(=A4$;TYDHLmTW[_#d#kpvx*!#-/$a(56)m89;vy@AB!2DE4$7LN::;P==?AYBXCDEE^IJKceL3NikR6opq89uvw;
newstring2=ij887i)54)?!@A!!!Ab##eBf##ddd#efff#b#cadc#bc_!!]@
newstring3=(qI}!+A!#z%%4?((

posted on 2006-02-20 12:29 Vincent.Chen 阅读(197) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: