当客户输入密码后,我们在后台进行密码加密的工作,并且在数据库中也看不到用户输入的真实密码

解决方案 »

  1.   

    去百度搜一个MD5的加密方法,copy过来直接调用他的方法就可以了,可以直接生成一串随机且唯一的MD5序列,很方便。
      

  2.   

    public static String md5(String plainText)
    {
    StringBuffer buf = new StringBuffer("");
    try
    {
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(plainText.getBytes());
    byte b[] = md.digest(); int i; for (int offset = 0; offset < b.length; offset++)
    {
    i = b[offset];
    if (i < 0)
    i += 256;
    if (i < 16)
    buf.append("0");
    buf.append(Integer.toHexString(i));
    }
    }
    catch (NoSuchAlgorithmException e)
    {
    e.printStackTrace();
    }
    return buf.toString();
    }
      

  3.   


        /**
         * MD5加密运算
         * @param password  原字符串
         * @return  MD5运算后的字符串
         */
        public static String md5(String password) 
        {
            
            byte[] unencodedPassword = password.getBytes();        MessageDigest md = null;        try {
                // first create an instance, given the provider
                md = MessageDigest.getInstance("MD5");
            } catch (Exception e) {
                log.error("Exception: " + e);            return password;
            }        md.reset();        // call the update method one or more times
            // (useful when you don't know the size of your data, eg. stream)
            md.update(unencodedPassword);        // now calculate the hash
            byte[] encodedPassword = md.digest();        StringBuffer buf = new StringBuffer();        for (int i = 0; i < encodedPassword.length; i++) {
                if ((encodedPassword[i] & 0xff) < 0x10) {
                    buf.append("0");
                }            buf.append(Long.toString(encodedPassword[i] & 0xff, 16));
            }        return buf.toString();        
        }
      

  4.   

    web数据交互可以采用https。具体实现方式有双向,和单向之分,一般来说单向就可以保证服务器端是可以受 信任即可,如果要做到双向,那客户端 和服务端 都必须拥有数字证书,这其实是比较麻烦的。因为你需要keytool,openssl这些工具生存的数字证书进行交互 ,其中的细节是比较多的。你可以搜索一些java ssl 双向认证这些关键词,一般都有详细介绍。
    至于数据库中不可见,简单的说。从程序校验用户密码开始,就是将密码进行加密后和数据库中的加密密文进行比较。新曾用户的时候也只是单纯的将密码进行sha1 ,md5加密后存放到数据库。至于算法到处都是随便一找就一堆。