`

法_算_密_加_5_D_M

阅读更多
/**
* MD5加密
*/
public class Crypt
{
    @SuppressWarnings("nls")
    private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
   
    /**
     * 把inputString加密    
     * @param inputString
     * @return  String
     */
    public String generatePassword(String inputString)
    {
        return encodeByMD5(inputString);
    }
   
    /**
     * TODO 添加方法注释
     * @param password
     * @param inputString
     * @return boolean
     */
    public boolean validatePassword(String password, String inputString)
    {
        if (password.equals(encodeByMD5(inputString)))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
   
    /**
     * TODO 添加方法注释
     * @param originString
     * @return String
     */
    public static String returnEncodeByMde(String originString)
    {
        return encodeByMD5(originString);
    }
   
    /**  对字符串进行MD5加密     */
    private static String encodeByMD5(String originString)
    {
        if (originString != null)
        {
            try
            {
                MessageDigest md = MessageDigest.getInstance("MD5"); //$NON-NLS-1$
                //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算    
                byte[] results = md.digest(originString.getBytes());
                //将得到的字节数组变成字符串返回    
                String resultString = byteArrayToHexString(results);
                String pass = resultString.toUpperCase();
                return pass;
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
            }
        }
        return null;
    }
   
    private static String byteArrayToHexString(byte[] b)
    {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
        {
            resultSb.append(byteToHexString(b[i]));
        }
        return resultSb.toString();
    }
   
    /** 将一个字节转化成十六进制形式的字符串     */
    private static String byteToHexString(byte b)
    {
        int n = b;
        if (n < 0)
            n = 256 + n;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
   
    /**
     * 测试
     * @param args
     */
    @SuppressWarnings("nls")
    public static void main(String[] args)
    {
        String pwd1 = "123";
        String pwd2 = "";
        Crypt cipher = new Crypt();
        System.out.println("未加密的密码:" + pwd1);
        //将123加密    
        pwd2 = cipher.generatePassword(pwd1);
        System.out.println("加密后的密码:" + pwd2);
       
        System.out.print("验证密码是否下确:");
        if (cipher.validatePassword(pwd2, pwd1))
        {
            System.out.println("正确");
        }
        else
        {
            System.out.println("错误");
        }
    }
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    rsa.rar_RSA linux_rsa_加密解密 RSA C_加密解密 linux_加解密

    这可能包括了大数运算的实现,如乘法、除法、模逆等,以及RSA算法的关键步骤,如模幂运算和私钥解密公式`c = m^d mod n`的应用。 6. **安全注意事项**:在实际应用中,密钥管理至关重要。私钥必须妥善保管,避免被...

    ras_加密解密vc_ras_

    文件名“ras”可能是一个包含了RAS算法源代码的文件,可能包含函数接口、实现细节和测试用例。 对于开发者来说,理解并实现RAS算法不仅需要扎实的数学基础,还需要掌握C++编程技巧,包括大整数运算、模幂运算等。在...

    rsa.rar_rsa算法和解密c_visual c_数据加密

    在压缩包"RSA算法源程序(C代码)"中,可能包含了以下文件: - `rsa.h`:头文件,定义了RSA类及其相关函数声明。 - `rsa.cpp`:源代码文件,实现了RSA类的具体功能,如密钥生成、加密和解密。 - `main.cpp`:主程序,...

    RSA.rar_C rsa_rsa_rsa加密_visual c

    5. **加密过程**:给定明文m(0&lt;m),加密公式为c=m^e mod n,其中c是密文。 6. **解密过程**:收到密文c后,使用私钥d解密,公式为m=c^d mod n,还原出原始明文m。 在Visual C环境下开发RSA加密程序,你需要包含...

    RSA加密解密之Linux C语言版

    加密过程是将明文m通过指数运算c=m^e mod n得到,解密则是c^d mod n还原为m。 在Linux环境下,C语言实现RSA需要以下步骤: 1. **大数运算库**:由于RSA涉及到大整数的运算,需要使用大数库,如GMP(GNU Multiple ...

    多种加密_仿射变换_

    它将字母映射到一个更大的字母表上,通过两个整数参数a和b完成,公式为:C = (a * M + b) % p,其中C是密文,M是明文,a和b是密钥,p是字母表的大小。这种加密方法比凯撒变换更复杂,增加了破解的难度,但仍不适用于...

    RSA.rar_rsa加密

    由于e和φ(n)互质,根据欧拉定理,存在一个整数d,使得e*d ≡ 1 mod φ(n),所以解密可以进行:C^d mod n = M。 在VC环境下实现RSA,你需要包含必要的数学库,如大数运算库,来处理大整数的计算。程序可能包含以下...

    c# 加密和解密相关代码

    在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和计算加密信息;在第二个GroupBox 中放入一个TextBox 控件和一个Button 按钮,分别用于显示 解密后...

    RSA加密所需要的js

    加密时,明文消息m通过^e模n运算得到密文c,解密时,密文c通过^d模n运算得到原文m。 `Barrett.js` 文件可能是一个用于快速模幂运算的库,模幂运算是RSA算法中非常关键的一部分,尤其是对于大数的模幂。Barrett除法...

    RSA非对称加密解密Delphi源码

    "RSA加解密及公钥密生成工具"这个文件可能是包含上述功能的Delphi源码文件或者一个简单的GUI应用程序,它提供了一个用户友好的界面,使得用户能够轻松地生成RSA密钥对,并进行加密和解密操作。 通过学习和理解这段...

    M-mary.rar_M ary乘方算法_Mary

    M-ary系统是一种数字表示法,其中数字由M个可能的符号(通常为0到M-1)组成。在M-ary乘方算法中,我们关注的是在模意义下的指数运算,即给定一个基数b,一个指数e和一个模数m,我们寻找\( b^e \)对m取模的结果。这个...

    桩基础m法计算系数的统一表达式

    在m法中,通常需要计算一系列的系数,如A、B、C、D等,这些系数用来表达桩的应力分布和位移情况。传统上,每个系数的表达式都不尽相同,导致计算过程复杂。文献中提出了一个统一的表达公式,简化了这16个系数的计算...

    rsa 文件加密酸法

    5. **解密过程**:接收到加密文件后,使用私钥(d, n)对每个密文块进行解密,公式为M = C^d mod n,还原出原始的明文块。 6. **文件重组**:将所有解密后的明文块按原顺序组合,恢复成完整的文件。 在软件实现中,...

    加密软件设计

    5. **解密过程**:将密文c通过私钥d解密回原文m,即m=c^d mod n。 6. **实现流程**:设计一个类结构,包含公钥和私钥的生成、加密和解密方法。确保私钥的安全存储,通常在实际应用中,私钥应当保存在本地,而公钥...

    仿射密码加密解密算法.docx

    scanf("%d%d", &a, &b); getchar(); // 抵消换行符的干扰 printf("输入str的内容\n"); gets(str); // 注意输入大写字母字符串 printf("明文:%s\n", str); encode(str, a, b, N); // 加密 printf("密文:%s\n...

    RSA加密解密

    5. **计算d**:d是e的模φ(n)的逆元,即d*e ≡ 1 mod φ(n)。求逆元可以通过扩展欧几里得算法来完成。d是私钥的一部分,e是公钥的一部分。 6. **构建密钥对**:公钥由(e, n)组成,私钥由(d, n)组成。公钥可以公开,...

    MD5.rar_md5string

    压缩包中的"MD5算法源文件"可能包含了实现MD5哈希计算的C++代码。这些源文件可能包含一个或多个函数,用于执行MD5算法的四个步骤:初始化、更新、最终化和输出。MD5算法通常包括以下关键部分: 1. **初始化**:设置...

    rsa.rar_LbBigInt_rsa_rsa delphi

    在这个"rsa.rar_LbBigInt_rsa_rsa delphi"的压缩包中,包含的文件可能是用Delphi实现的RSA算法源代码。LbBigInt可能是一个用于处理大整数的库,这对于RSA算法来说至关重要,因为RSA涉及到大素数的乘积以及大整数的加...

    RSA算法加密的e,d确定

    3. **解密**:收到密文\( c \)后,使用私钥\( d \)计算\( m = c^d \mod n \)以恢复原始消息。 #### 三、RSA算法的安全性分析 RSA算法的安全性基于大数分解的困难性,即对于给定的\( n \)找到\( p \)和\( q \)的...

Global site tag (gtag.js) - Google Analytics