
Java代码转为ASP代码(关于BASE64和MD5加密的一段)
我要连一个别人的oracle数据库,首先进行用户的验证,但是是数据库中的密码字段是以密文形式保存,现在我知道JAVA中是如何进行加密和解密的,但是要求用ASP做,本人是A...
我要连一个别人的oracle数据库,首先进行用户的验证,但是是数据库中的密码字段是以密文形式保存,现在我知道JAVA中是如何进行加密和解密的,但是要求用ASP做,本人是ASP初学者,要求各位能不能给出个ASP验证的方法,最好是有代码,我做的代码都验证不过去。
[java]中的加密和解密代码:
pw 明文密码
pw2 数据库中的密码
String pw2 = pw2.substring(0, 16);暗码的前16位
pw1 = pw2.substring(16, pw2.length());暗码的16位后
PasswordAuthenticator.authenticatePassword(pw, pw1, pw2) //密码验证算法
BASE64Decoder base64decoder = new BASE64Decoder();
byte abyte0[] = base64decoder.decodeBuffer(pw2);前16位解码得到byte[12]
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(abyte0);byte[12]
messagedigest.update(pw.getBytes("UTF8"));+明文
getBytes("UTF8")英文单字节
byte abyte1[] = messagedigest.digest();生成摘要
BASE64Encoder base64encoder = new BASE64Encoder();
String pw3 = base64encoder.encode(abyte1);加码
byte abyte2[] = pw1.getBytes();数据库内16位后的密码
byte abyte3[] = pw3.getBytes();md5+encoder后的密码
public static String createPassword(String pw)
throws Exception //密码的生成算法
{
SecureRandom securerandom = new SecureRandom();
byte abyte0[] = new byte[12];
securerandom.nextBytes(abyte0);取得随机数byte[12]
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(abyte0);
messagedigest.update(pw.getBytes("UTF8"));
byte abyte1[] = messagedigest.digest();md5(随机数+明文)
BASE64Encoder base64encoder = new BASE64Encoder();
String pw1 = base64encoder.encode(abyte0);encode(随机数)16位
String pw2 = base64encoder.encode(abyte1);encode(md5后的)
saltMeij = pw1;
digestSMeij = pw2;
return pw1 + pw2;
}
取密码的前16位做BASE64解码得到一个unsigned char*[](c1)
c1+前台输入的明文(英文和数字--中文密码进一步做)做md5加密得到一字符串
密码的后24位做BASE64解码得到一字符串(字符逐字转为ascii(16进制),连接后与第二步的字符串相等)
只要是给的代码验证通过,我将再追加分数,急求解决!!! 展开
[java]中的加密和解密代码:
pw 明文密码
pw2 数据库中的密码
String pw2 = pw2.substring(0, 16);暗码的前16位
pw1 = pw2.substring(16, pw2.length());暗码的16位后
PasswordAuthenticator.authenticatePassword(pw, pw1, pw2) //密码验证算法
BASE64Decoder base64decoder = new BASE64Decoder();
byte abyte0[] = base64decoder.decodeBuffer(pw2);前16位解码得到byte[12]
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(abyte0);byte[12]
messagedigest.update(pw.getBytes("UTF8"));+明文
getBytes("UTF8")英文单字节
byte abyte1[] = messagedigest.digest();生成摘要
BASE64Encoder base64encoder = new BASE64Encoder();
String pw3 = base64encoder.encode(abyte1);加码
byte abyte2[] = pw1.getBytes();数据库内16位后的密码
byte abyte3[] = pw3.getBytes();md5+encoder后的密码
public static String createPassword(String pw)
throws Exception //密码的生成算法
{
SecureRandom securerandom = new SecureRandom();
byte abyte0[] = new byte[12];
securerandom.nextBytes(abyte0);取得随机数byte[12]
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(abyte0);
messagedigest.update(pw.getBytes("UTF8"));
byte abyte1[] = messagedigest.digest();md5(随机数+明文)
BASE64Encoder base64encoder = new BASE64Encoder();
String pw1 = base64encoder.encode(abyte0);encode(随机数)16位
String pw2 = base64encoder.encode(abyte1);encode(md5后的)
saltMeij = pw1;
digestSMeij = pw2;
return pw1 + pw2;
}
取密码的前16位做BASE64解码得到一个unsigned char*[](c1)
c1+前台输入的明文(英文和数字--中文密码进一步做)做md5加密得到一字符串
密码的后24位做BASE64解码得到一字符串(字符逐字转为ascii(16进制),连接后与第二步的字符串相等)
只要是给的代码验证通过,我将再追加分数,急求解决!!! 展开
2个回答
展开全部
告诉你一个简单的方法,你可以直接取数据库已加密的密文与你输入并保存在数据库的密文对比,如果一样就是相等.像你这么变好像太麻烦了,还有一点, 我不玩ASP,不好意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询