用两种算法进行加解密(语言可以c++,Java等) 最好是最近有回复、、 O(∩_∩)O谢谢

如题所述

第1个回答  2010-08-26
我有RSA和MD5一些算法的代码,java的,用么?
如果用的话联系我xmu.wc.2007@gmail.com
第2个回答  2010-08-26
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。

消息摘要有两个基本属性:

两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5

(二)对字符串进行加密
/** *//**利用MD5进行加密
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
* @throws UnsupportedEncodingException
*/
public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
return newstr;
}调用函数:
String str="0123456789"
System.out.println(EncoderByMd5(str));
输出:eB5eJF1ptWaXm4bijSPyxw==
(三)验证密码是否正确
因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。
/** *//**判断用户密码是否正确
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
if(EncoderByMd5(newpasswd).equals(oldpasswd))
return true;
else
return false;
}

参考资料:http://www.ibm.com/developerworks/cn/java/l-security/

本回答被网友采纳
第3个回答  2010-08-26
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。

消息摘要有两个基本属性:

两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5

(二)对字符串进行加密
/** *//**利用MD5进行加密
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
* @throws UnsupportedEncodingException
*/
public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
return newstr;
}调用函数:
String str="0123456789"
System.out.println(EncoderByMd5(str));
输出:eB5eJF1ptWaXm4bijSPyxw==
(三)验证密码是否正确
因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。
/** *//**判断用户密码是否正确
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
if(EncoderByMd5(newpasswd).equals(oldpas

...语言,c++,vb ,vc,java等。。那个编程软件 最好 最宽用 请教到_百度...
BASIC有着其他语言无可比拟的可读性和易学性,但是BASIC语言对硬件库的支持不是很好,一般只能开发电脑上的小软件。而C语言和C++语言是使用最广泛的语言,他们对硬件的支持很好,但是语法界面就不是很友好了,要学习C语言必须下狠功夫!但是大部分单片机的程序都是使用C语言来编程的。JAVA语言一时兴起,是...

寻求一个面板切割最优解的算法,可以用C、C++或Java编写。寻求高手帮助...
这时一个多目标组合优化问题,NP完全问题,没有那么简单,属于世界性的难题。可以使用遗传算法、粒子群算法等模拟演化算法求解得到一个近优解,没有算法能保证得到一个最优解。

C,C++,JAVA这三种编程语言中各有什么优点,什么缺点?各自一般用在什么时...
JAVA:是C++派生来的,主要用于网页这块应用相当广泛。缺点是比新的高级语言开发慢。

JAVA和C++应该学那个,都是JAVA竞争多,现在好找工作不?
再结合面向对象的特征,所以C++语言的应用场景也是比较丰富的。C++语言适合构建场景比较复杂的应用,比如ERP系统、容器开发、多媒体(包括游戏类)开发等等。相比于C语言来说,C++语言在难度上有明显的提升,通常不建议作为入门语言来学习。

java和c++哪个简单(java和c++哪个强大)
如果是都要学,那么可以先学习c++,c++可以说是Java的前身,但相比之下c++更难,建议从C语言入手,之后再学Java要简单一点。千锋教育就有线上免费Java线上公开课。C语言和Java语言都是目前应用最为广泛的编程语言,要想决定从那个语言开始学起,需要考虑三方面因素,其一是语言自身的学习难度;其二是语言...

给个列变位加解密算法的实现程序(JAVA、C++、C都可以)
cpp代码如下 include <iostream>using namespace std;string encode(const string &input, size_t key) {string result;size_t size = input.size();for (size_t col = 0; col < key; ++col)for (size_t cur = col; cur < size; cur += key)result += input[cur];return result;}...

c++和java哪个有前途(c++好还是java)
第一,Java语言提供更好的抽象,如垃圾回收,让程序员不用为内存的分配和释放操心,同时减少了C\/C++中的复杂性。因此容易学习是其特点。C语言比较好学,简单,速成。C语言用得比较广,而且是很成熟的面向过程的一门语言。java好,没有错。不是语言的问题,是java的生态更好,开源的属性,框架多,资源...

c++和java哪个简单(c++与java哪个好)
C语言比较难,JAVA是比较容易的,这个答案已经明朗了,网上大家都这样说。JAVA还是比较好学,在以后的求职过程也是应用比较多的。最好两种语言都学。因为他们完全不同,不会互相干扰。学C容易上手,最要是开发工具比较好用,便于实践。学Java缺少良好的开发工具,熟悉,配置开发环境要花很长时间。如果是没...

3. 用任意一种编程语言(C\/C++\/Java\/C#\/VB.NET)写出任意一种你所知的...
void StoogeSort(int a[],const int p,const int r);\/\/Stooge排序(不用)算法复杂度没算清楚 void main(){ \/\/插入排序算法 int a[11] = {6,4,5,3,2,1};int dlta[]={9,5,3,2,1};\/\/BubbleSort(a,0,5);\/\/InsertSort(a,0,5);\/\/SelectSort(a,0,5);\/\/MergeSort(a,0,5...

Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密
一、Java端加密流程:Java端生成AES加密时,首先需要使用KeyGenerator类创建密钥生成器实例。使用指定的算法(如AES)和密钥大小(通常为128位)初始化KeyGenerator。然后,通过调用其generateKey()方法生成密钥。二、Java端解密流程(示例代码):在Java端,解密操作通常需要使用预先生成的密钥。解密通常涉及...

相似回答
大家正在搜