- 浏览: 118032 次
- 性别:
- 来自: 深圳
文章分类
最新评论
/**
* 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("错误");
}
}
* 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("错误");
}
}
发表评论
文章已被作者锁定,不允许评论。
-
美邦智能
2013-03-30 14:35 0员工管理(工资,假期,) 客户管理 供应商管理 采购模块 ... -
加密解密
2011-12-03 14:59 871String a = "ABCc"; ... -
例_实_建_创_口_接_过_通
2011-08-17 09:50 510public interface IJieKou { ... -
BASE64编码
2011-08-12 16:59 628将对ABC进行BASE64编码: // 1、首先取ABC对 ... -
流_件_文_java
2011-07-20 14:10 667读取 File file = new File(" ... -
作_操_合_集
2011-07-05 15:09 740//Collections List<String> ... -
BigDecimal
2011-07-02 18:42 894double num1 = 2.36; double num2 ... -
件_文_Properties
2011-06-29 19:26 655Properties properties = new Pro ... -
Eclipse平台BPEL开发
2011-06-25 00:15 736Eclipse平台BPEL开发 -
件_文_缩_压
2011-04-11 19:46 654/****************************** ... -
素_元_组_数_除_删_加_增
2011-04-11 19:44 597private static void delIndexEle ... -
作_操_件_文_Java
2011-04-06 20:39 690/****************************** ... -
式_格_字_数
2011-04-06 20:36 669System.out.println(&quo ... -
用_引_软
2011-04-06 20:28 721/****************************** ... -
过_程_载_加_类
2011-04-06 20:27 6321.编写源代码 2.jdk变异成.class文件 3.类加 ... -
序_排_速_快_现_实_JAVA
2011-02-11 17:21 727JAVA实现一个快速排序? 排序的方法有:插入排序(直接插入排 ... -
器_时_定_java
2011-02-11 17:06 589public class aaa { //java定时执行 ... -
举_枚
2011-01-20 12:22 7581.枚举其实都是隐式的继承自java.lang.Enum。有类 ... -
类_e_l_i_F
2011-01-13 23:17 6111.File类提供了管理文件和目录的方法 delete() ... -
制_机_理_处_常_异
2011-01-13 22:29 7301.异常处理:如何表现异常情况?如何控制处理异常流程? 2. ...
相关推荐
这可能包括了大数运算的实现,如乘法、除法、模逆等,以及RSA算法的关键步骤,如模幂运算和私钥解密公式`c = m^d mod n`的应用。 6. **安全注意事项**:在实际应用中,密钥管理至关重要。私钥必须妥善保管,避免被...
文件名“ras”可能是一个包含了RAS算法源代码的文件,可能包含函数接口、实现细节和测试用例。 对于开发者来说,理解并实现RAS算法不仅需要扎实的数学基础,还需要掌握C++编程技巧,包括大整数运算、模幂运算等。在...
在压缩包"RSA算法源程序(C代码)"中,可能包含了以下文件: - `rsa.h`:头文件,定义了RSA类及其相关函数声明。 - `rsa.cpp`:源代码文件,实现了RSA类的具体功能,如密钥生成、加密和解密。 - `main.cpp`:主程序,...
5. **加密过程**:给定明文m(0<m),加密公式为c=m^e mod n,其中c是密文。 6. **解密过程**:收到密文c后,使用私钥d解密,公式为m=c^d mod n,还原出原始明文m。 在Visual C环境下开发RSA加密程序,你需要包含...
加密过程是将明文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是字母表的大小。这种加密方法比凯撒变换更复杂,增加了破解的难度,但仍不适用于...
由于e和φ(n)互质,根据欧拉定理,存在一个整数d,使得e*d ≡ 1 mod φ(n),所以解密可以进行:C^d mod n = M。 在VC环境下实现RSA,你需要包含必要的数学库,如大数运算库,来处理大整数的计算。程序可能包含以下...
在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和计算加密信息;在第二个GroupBox 中放入一个TextBox 控件和一个Button 按钮,分别用于显示 解密后...
加密时,明文消息m通过^e模n运算得到密文c,解密时,密文c通过^d模n运算得到原文m。 `Barrett.js` 文件可能是一个用于快速模幂运算的库,模幂运算是RSA算法中非常关键的一部分,尤其是对于大数的模幂。Barrett除法...
"RSA加解密及公钥密生成工具"这个文件可能是包含上述功能的Delphi源码文件或者一个简单的GUI应用程序,它提供了一个用户友好的界面,使得用户能够轻松地生成RSA密钥对,并进行加密和解密操作。 通过学习和理解这段...
M-ary系统是一种数字表示法,其中数字由M个可能的符号(通常为0到M-1)组成。在M-ary乘方算法中,我们关注的是在模意义下的指数运算,即给定一个基数b,一个指数e和一个模数m,我们寻找\( b^e \)对m取模的结果。这个...
在m法中,通常需要计算一系列的系数,如A、B、C、D等,这些系数用来表达桩的应力分布和位移情况。传统上,每个系数的表达式都不尽相同,导致计算过程复杂。文献中提出了一个统一的表达公式,简化了这16个系数的计算...
5. **解密过程**:接收到加密文件后,使用私钥(d, n)对每个密文块进行解密,公式为M = C^d mod n,还原出原始的明文块。 6. **文件重组**:将所有解密后的明文块按原顺序组合,恢复成完整的文件。 在软件实现中,...
5. **解密过程**:将密文c通过私钥d解密回原文m,即m=c^d mod n。 6. **实现流程**:设计一个类结构,包含公钥和私钥的生成、加密和解密方法。确保私钥的安全存储,通常在实际应用中,私钥应当保存在本地,而公钥...
scanf("%d%d", &a, &b); getchar(); // 抵消换行符的干扰 printf("输入str的内容\n"); gets(str); // 注意输入大写字母字符串 printf("明文:%s\n", str); encode(str, a, b, N); // 加密 printf("密文:%s\n...
5. **计算d**:d是e的模φ(n)的逆元,即d*e ≡ 1 mod φ(n)。求逆元可以通过扩展欧几里得算法来完成。d是私钥的一部分,e是公钥的一部分。 6. **构建密钥对**:公钥由(e, n)组成,私钥由(d, n)组成。公钥可以公开,...
压缩包中的"MD5算法源文件"可能包含了实现MD5哈希计算的C++代码。这些源文件可能包含一个或多个函数,用于执行MD5算法的四个步骤:初始化、更新、最终化和输出。MD5算法通常包括以下关键部分: 1. **初始化**:设置...
在这个"rsa.rar_LbBigInt_rsa_rsa delphi"的压缩包中,包含的文件可能是用Delphi实现的RSA算法源代码。LbBigInt可能是一个用于处理大整数的库,这对于RSA算法来说至关重要,因为RSA涉及到大素数的乘积以及大整数的加...
3. **解密**:收到密文\( c \)后,使用私钥\( d \)计算\( m = c^d \mod n \)以恢复原始消息。 #### 三、RSA算法的安全性分析 RSA算法的安全性基于大数分解的困难性,即对于给定的\( n \)找到\( p \)和\( q \)的...