首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

征集数据加密的方式,该怎么解决

2012-01-12 
征集数据加密的方式征集数据加密的方式,本人现在还没有用过数据加密,请问一下,现在都有哪些加密方式?提供

征集数据加密的方式
征集数据加密的方式,本人现在还没有用过数据加密,请问一下,现在都有哪些加密方式?提供详细资料和例子!

[解决办法]
MD5加密

Java code
import java.security.MessageDigest;public class MD5_1 {    public final static String MD5(String s){        char hexDigits[]={                '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'        };        try{            byte[] strTemp=s.getBytes();            MessageDigest mdTemp=MessageDigest.getInstance("MD5");            mdTemp.update(strTemp);            byte[] md=mdTemp.digest();            int j=md.length;            char str[]=new char[j*2];            int k=0;            for(int i=0;i<j;i++){                byte byte0 = md[i];                   str[k++] = hexDigits[byte0 >>> 4 & 0xf];                   str[k++] = hexDigits[byte0 & 0xf];               }            return new String(str);        }catch(Exception e){            e.printStackTrace();            return null;        }    }
[解决办法]
Java code
import java.util.HashMap;import java.util.Map;public class Ecrypt {    public static int fgetps(String str) {        Map s = new HashMap();        s.put("0", "124");        s.put("1", "99");        s.put("2", "75");        s.put("3", "65");        s.put("4", "445");        s.put("5", "367");        s.put("6", "313");        s.put("7", "271");        s.put("8", "239");        s.put("9", "211");        s.put("a", "183 ");        s.put("b", "1115");        s.put("c", "1135");        s.put("d", "1157");        s.put("e", "1177");        s.put("f", "1505");        s.put("g", "1211");        s.put("h", "1321");        s.put("i", "1471");        s.put("j", "1110");        s.put("k", "1347");        s.put("l", "1112");        s.put("m", "1113");        s.put("n", "1114");        s.put("o", "1361");        s.put("p", "1116");        s.put("q", "1309");        s.put("r", "1347");        s.put("s", "1119");        s.put("t", "1389");        s.put("u", "1405");        s.put("v", "1425");        s.put("w", "1467");        s.put("x", "1219");        s.put("y", "1187");        s.put("z", "1151");        s.put("A", "83 ");        s.put("B", "115");        s.put("C", "135");        s.put("D", "157");        s.put("E", "177");        s.put("F", "505");        s.put("G", "211");        s.put("H", "321");        s.put("I", "471");        s.put("J", "110");        s.put("K", "347");        s.put("L", "112");        s.put("M", "113");        s.put("N", "114");        s.put("O", "361");        s.put("P", "116");        s.put("Q", "309");        s.put("R", "347");        s.put("S", "119");        s.put("T", "389");        s.put("U", "405");        s.put("V", "425");        s.put("W", "467");        s.put("X", "219");        s.put("Y", "187");        s.put("Z", "151");        s.put("~", "431");        s.put("!", "363");        s.put("@", "397");        s.put("#", "331");        s.put("$", "293");        s.put("%", "251");        s.put("^", "239");        s.put("&", "223");        s.put("*", "189");        s.put("(", "165");        s.put(")", "153");        s.put("-", "142");        s.put("+", "609");        s.put("|", "577");        s.put("\\", "547");        s.put("/", "511");        s.put("*", "493");        s.put(".", "327");        s.put(",", "285");        s.put(";", "267");        s.put("{", "251");        s.put("}", "223");        s.put("[", "122");        s.put("]", "634");        if (str == null)            str = "";        String str1 = str.trim();        int max = str1.length();        int password = 0;        String str2 = "";        String str3 = "";        for (int i = 0; i < max; i++) {            str2 = str1.substring(i, i + 1);            str3 = (String) s.get(str2);            if (str3 != null)                password += Integer.parseInt(str3);        }        return password;    } 


[解决办法]
package netcom.MD5;
import java.security.*;
import java.security.spec.*;
import java.math.*;
public class MD5{
char hexChars[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
public String convert32(String s){
try{
byte[] bytes=s.getBytes();
MessageDigest md=MessageDigest.getInstance("MD5");
md.update(bytes);
bytes=md.digest();
int j=bytes.length;
char[] chars=new char[j*2];
int k=0;
for(int i=0;i<bytes.length;i++){
byte b=bytes[i];
chars[k++]=hexChars[b>>>4&0xf];
chars[k++]=hexChars[b&0xf];
}
return new String(chars);
}
catch(Exception e){
return null;
}
}
public String convert16(String s){
String ns=convert32(s).substring(8,24);
return ns;
}
}


这种方法是加密成16位数字+字母组合。


package netcom.MD5;
import java.security.MessageDigest;
public class KL{ 
//可逆的加密算法 
public static String jiami(String inStr){ 
//String s = new String(inStr); 
char[] a = inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
a[i] = (char)(a[i]^'~'); 

String s=new String(a); 
return s; 

public static String jiemi(String inStr){ 
char[] a=inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
a[i]= (char)(a[i]^'~'); 

String k=new String(a); 
return k; 

}
[解决办法]

探讨
String pwd=(new MD5()).convert16(user.getSuPassword());
MD5 如果在java中进行引应用的话,需要下载jar包啊
这个加密方式是单向的还是双向的

[解决办法]
Java code
package com.winnet.encrypt;/** * 数据加密类 支持SHA-1,SHA-2(SHA-256,SHA-384,SHA-512),MD2,MD5 是对java自带加密算法的二次封装 */import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class Encrypt{    public Encrypt()    {    }    /**     * MD2加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetMD2EncString(String plantText)    {        return this.GetEncString(plantText, "MD2");    }    /**     * MD5加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetMD5EncString(String plantText)    {        return this.GetEncString(plantText, "MD5");    }    /**     * SHA-1加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetSHA1EncString(String plantText)    {        return this.GetEncString(plantText, "SHA-1");    }    /**     * SHA-256加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetSHA256EncString(String plantText)    {        return this.GetEncString(plantText, "SHA-256");    }    /**     * SHA-384加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetSHA384EncString(String plantText)    {        return this.GetEncString(plantText, "SHA-384");    }    /**     * SHA-512加密算法     *      * @param plantText     *            需要加密的字符串     * @return String型 加密后的字符串     */    public String GetSHA512EncString(String plantText)    {        return this.GetEncString(plantText, "SHA-512");    }    /**     * 数据加密算法     *      * @param plainText     *            加密字符串     * @param algorithm     *            加密算法,支持SHA-1,SHA-2(SHA-256,SHA-384,SHA-512),MD2,MD5     * @return 加密结果     */    private String GetEncString(String plainText, String algorithm)    {        try        {            MessageDigest md = MessageDigest.getInstance(algorithm);            md.update(plainText.getBytes());            byte[] b = md.digest();            StringBuilder output = new StringBuilder(32);            for (int i = 0; i < b.length; i++)            {                String temp = Integer.toHexString(b[i] & 0xff);                if (temp.length() < 2)                {                    output.append("0");// 不足两位,补0                }                output.append(temp);            }            return output.toString();        }        catch (NoSuchAlgorithmException e)        {            e.printStackTrace();            return null;        }    }    /*     * 另外一种方法 //private final char[] HEXCHAR_LOWERCASE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; //private     * final char[] HEXCHAR_UPPERCASE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; private String     * getDigest(String plainText, String algorithm,String stringcase) throws Exception { MessageDigest md5 = MessageDigest.getInstance(algorithm);     * md5.update(plainText.getBytes()); return toHexString(md5.digest(),stringcase); }     *      * private String toHexString(byte[] b,String stringcase) { StringBuilder sb = new StringBuilder(b.length * 2);     * if(stringcase.toLowerCase().equals("lower")) { for (int i = 0; i < b.length; i++) { sb.append(HEXCHAR_LOWERCASE[(b[i] & 0xf0) >>> 4]);     * sb.append(HEXCHAR_LOWERCASE[b[i] & 0x0f]); } } else if(stringcase.toLowerCase().equals("upper")) { for (int i = 0; i < b.length; i++) {     * sb.append(HEXCHAR_UPPERCASE[(b[i] & 0xf0) >>> 4]); sb.append(HEXCHAR_UPPERCASE[b[i] & 0x0f]); } } return sb.toString(); }     */} 


[解决办法]
1, 对称加密可以选择DES, 优点是速度快, 很纯粹很有节奏的加密过程,其算法规整简明, 容易实现. 而且自己扩展也很容易.
2, 非对称的可以选择RSA, 优点是数学根基严密, 推导过程很清晰明了. 但是算法较复杂. 可以搞得很烂, 也可以写到很牛B. 难点在于大整数除法和模幂运算.从烂到精也就是从SB到牛B的过程. 缺点是即使写得很牛B, 速度还是赶不上对称加密快.

[解决办法]

探讨
String pwd=(new MD5()).convert16(user.getSuPassword());
MD5 如果在java中进行引应用的话,需要下载jar包啊
这个加密方式是单向的还是双向的

[解决办法]
我用的也是md5加密,虽然不可逆,但是别人将自己的想改变的密码用md5算法加密一次,然后将将生成的结果直接覆盖原密码就破解了,这是个问题
[解决办法]
实在看不下去了。。。。。。

必须要站出来说话了了!!!

MD5 ,SHA-1 ,RIPEND-160等都是哈希算法!用来验证文件的完整性。

加密算法 分为 对称加密算法和非对称加密算法(又叫公私钥加密算法)

对称加密算法:DES,3-DES,AES,RC2等等
公钥加密算法:RSA,ECC等等。

加密算法前提是明文能够转化为密文,密文能够转化为明文,MD5能做到么?别给我说什么MD5反过来破解。查查什么叫做弱碰撞,什么叫做强碰撞。
[解决办法]
哈希算法也叫摘要算法、杂凑函数,用来生成原文的摘要的,一般用来做数据完整性验证,也用于数字签名中。目前很多系统使用它对用户密码进行散列运算,用它的单项性来变相的起到对密码加密的作用。
[解决办法]
同意按照对称加密和非对称加密的楼上同志的意见。

也要看你加密对象的尺寸,如果比较大,可以考虑流加密,例如RC4,如果尺寸小,可以考虑块加密。只是不建议采用DES,至少采用3DES或者AES,我建议用AES,加密性能和安全性都比较不错。
如果希望对大尺寸文件进行AES这样的块加密,会稍微麻烦一些。你可以一次性处理1024个字节,然后每一个块进行一次加密。这样就可以近似实现流加密的效果了。

通常不需要自己开发太多代码,使用现成的加密算法就好了。

热点排行