用VB编的密码解密函数 转换为 JSP 。请各位高手救命

jsczzxh 2008-01-25 10:50:51
我有一个加密的程序,是用VB编的,现在要转换成JSP在网页里用,请问有高手能帮帮忙吗?谢谢各位大大了。


For r = 1 To Len(Text1.Text)
kk1 = Mid(Text1.Text, r, 1)
kk = kk + Asc(kk1)
Next
kk = kk Mod 15 + 12
k2 = DTPicker2.Year - 1900 + 46
Do While k2 > 255
k2 = k2 - 255
Loop
mou = DTPicker2.Month
If Len(mou) = 2 Then
mou = Mid(mou, 2, 1)
End If
ss = Text1.Text & DTPicker2.Year & mou
If Len(Text1.Text) < 15 Or Text2.Text = "" Then
MsgBox "请仔细核对!请重新注册!", vbInformation, "输入错误提示"
Else
Text4.Text = Encrypt(ss, kk, k2)



Public Function Encrypt(ByVal strSource As String, ByVal Key1 As Integer, ByVal Key2 As

Integer) As String
Dim bLowData As Byte
Dim bHigData As Byte
Dim i As Integer
Dim strEncrypt As String
Dim strChar As String
Dim ss As String
Dim aa As String
For i = 5 To Len(strSource)
strChar = Mid(strSource, i, 1)
bLowData = AscB(MidB(strChar, 1, 1)) Xor Key1
bHigData = bLowData Xor Key2
Do While bHigData > 122
bHigData = bHigData - 122
Loop
If bHigData < 48 Then
bHigData = bHigData + 74
End If
If (bHigData > 57 And bHigData < 65) Then
bHigData = bHigData + 8
End If
If (bHigData > 90 And bHigData < 97) Then
bHigData = bHigData + 7
End If
strEncrypt = strEncrypt & Chr(bHigData)

Next
Encrypt = strEncrypt
End Function
...全文
222 23 点赞 打赏 收藏 举报
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
直接在text4中的啊!VB中就是这么做的。
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
无法输出嘛
  • 打赏
  • 举报
回复
ProcessServlet.java有点小错,由于只用到了year和month,没有用到day,所以day就不进行校验了,若要校验可以按照month的格式。

if (year.matches("\\d{4}")) {
y = Integer.parseInt(year);
} else {
request.setAttribute("error", "年份输入错误");
dispatcher.forward(request, response);
return;
}
if (month.matches("\\d{1,2}")) {
m = Integer.parseInt(month);
} else {
request.setAttribute("error", "月份输入错误");
dispatcher.forward(request, response);
return;
}
  • 打赏
  • 举报
回复
index.jsp
<%@ page contentType="text/html; charset=gbk"%>
<html>
<body>
<span style="color: #ff0000">${error}</span>
<form action="Process" method="post">
<input type="text" name="year" maxlength="4" size="4" value="${year}">年
<input type="text" name="month" maxlength="2" size="4" value="${month}">月
<input type="text" name="day" maxlength="2" size="4" value="${day}">日<br/>
Text1: <input type="text" name="text1" value="${text1}"><br/>
Text2: <input type="text" name="text2" value="${text2}"><br/>
Text4: <input type="text" name="text4" value="${text4}" readonly="readonly"><br/>
<input type="submit" value="确定"/>
</form>
</body>
</html>


com.service.Service.java

package com.service;

public class Service {
public String encrypt(String strSource, int key1, int key2) {
int bLowData;
int bHigData;
StringBuffer strEncrypt = new StringBuffer();
char[] strChar = strSource.toCharArray();
for (int i = 4; i < strChar.length; i++) {
byte[] b = (strChar[i]+"").getBytes();
bLowData = (int)b[0] ^ key1;
bHigData = bLowData ^ key2;
while(bHigData > 122) {
bHigData -= 122;
}
if (bHigData < 48) {
bHigData += 74;
}
if (bHigData > 57 && bHigData < 65) {
bHigData += 8;
}
if (bHigData > 90 && bHigData < 97) {
bHigData += 7;
}
strEncrypt.append((char)bHigData);
}
return strEncrypt.toString();
}
}


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Process</servlet-name>
<servlet-class>com.servlet.ProcessServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Process</servlet-name>
<url-pattern>/Process</url-pattern>
</servlet-mapping>
</web-app>


com.servlet.ProcessServlet.java
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.service.Service;

public class ProcessServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");

String text1 = request.getParameter("text1");
String text2 = request.getParameter("text2");
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");

request.setAttribute("text1", text1);
request.setAttribute("text2", text2);
request.setAttribute("year", year);
request.setAttribute("month", month);
request.setAttribute("day", day);

RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/index.jsp");

int y = 0;
int m = 0;
if (year.matches("\\d{4}")) {
y = Integer.parseInt(year);
} else {
request.setAttribute("error", "年份输入错误");
dispatcher.forward(request, response);
}
if (month.matches("\\d{1,2}")) {
m = Integer.parseInt(month);
} else {
request.setAttribute("error", "月份输入错误");
dispatcher.forward(request, response);
}

int kk = 0;
int k2 = 0;
String ss;
String encry;
char[] chars = text1.toCharArray();
for (int i = 0; i < chars.length; i++) {
kk += chars[i];
}
kk = kk % 15 + 12;
k2 = y - 1900 + 46;
while (k2 > 255) {
k2 -= 255;
}
if ((m + "").length() == 2) {
m = m % 10;
}
ss = text1 + year;
if (text1.length() < 15 || "".equals(text2)) {
request.setAttribute("error", "请仔细核对!请重新注册!");
dispatcher.forward(request, response);
} else {
Service service = new Service();
encry = service.encrypt(ss, kk, k2);
request.setAttribute("text4", encry);
dispatcher.forward(request, response);
}
}
}
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
对.能帮我写个完整的JSP吗?能直接输入出结果的.
  • 打赏
  • 举报
回复
哦,那就在页面上放三个text就可以了。
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
我是年/月/日分三个文本框输入
  • 打赏
  • 举报
回复
年月日的输入在HTML中没有现成的,需要去下载个日历的JavaScript库(有好多现成的)。
  • 打赏
  • 举报
回复
嘻嘻,当然不会见笑喽~~

最后的结果肯定是要在页面上输出的,根据提供的VB程序,是把加密后的字符串放到文本框中的。

在页面上也可以在form里做个文本框,用于显示的。

假如页面上有个text名为text4,采用JSP的EL表达式,花括号内的就是在上面塞到request
(request.setAttribute("encry", encry);)中的encry。

<!-- ${error}有错就输出了,没错就是空的 -->
${error}
<input type="text" name="text4" value="${encry}">
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
text和text2是2个文本框,DTPicker2是个年月日的输入
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
再问个问题,最后结果的输出怎么处理.我是个菜菜鸟,不要见笑啊.
  • 打赏
  • 举报
回复
这个用HTML根本就没有办法实现,首先我并不知道页面上要有些什么,具体得做些什么,
而且DTPicker2这个我也不知道是什么东西。
  • 打赏
  • 举报
回复
jsczzxh 2008-01-29
可以写个HTML给我看看吗?
  • 打赏
  • 举报
回复
// 这些部分需要根据页面上所取到的参数来替换掉
$$text = Text1.Text
$$text2 = Text2.Text
$$year = DTPicker2.Year
$$mou = DTPicker2.Mont;

int kk = 0;
int k2 = 0;
int mou = 0;
String ss;
String encry;
char[] chars = $$text.toCharArray();
for(int i = 0; i < chars.length; i++) {
kk += chars[i];
}
kk = kk % 15 + 12;
k2 = $$year - 1900 + 46;
while(k2 > 255) {
k2 -= 255;
}
mou = $$mou;
if((mou+"").length() == 2) {
mou = mou % 10;
}
ss = $$text + $$year;
if($$text.length() < 15 || "".equals($$text2)) {
request.setAttribute("error", "请仔细核对!请重新注册!");
}else{
encry = encrypt(ss, kk, k2);
request.setAttribute("emcry", encry);
}
  • 打赏
  • 举报
回复
lord_is_layuping 2008-01-28
学习。
  • 打赏
  • 举报
回复
guoqiangone 2008-01-26
冬瓜,我也刷一下

4楼的真是无耻,遇到多次了就会拷他人的回答,剽窃他人劳动成果!


每天还要两个号倒分!


还要发烂贴!


举报你的帖子都挂出来了,还在干这勾当!


我终于知道人竟然可以无耻到这种地步!
  • 打赏
  • 举报
回复
public String encrypt(String strSource, int key1, int key2) {
int bLowData;
int bHigData;
StringBuffer strEncrypt = new StringBuffer();
char[] strChar = strSource.toCharArray();
for (int i = 4; i < strChar.length; i++) {
byte[] b = (strChar[i]+"").getBytes();
bLowData = (int)b[0] ^ key1;
bHigData = bLowData ^ key2;
while(bHigData > 122) {
bHigData -= 122;
}
if (bHigData < 48) {
bHigData += 74;
}
if (bHigData > 57 && bHigData < 65) {
bHigData += 8;
}
if (bHigData > 90 && bHigData < 97) {
bHigData += 7;
}
strEncrypt.append((char)bHigData);
}
return strEncrypt.toString();
}
  • 打赏
  • 举报
回复
olivesoup 2008-01-25
1.你可以理解这个解密函数后在jsp里重新编写
2.想办法在jsp中调用这个现成的vb函数

vb我不太会,只能给你提解决方按
  • 打赏
  • 举报
回复
guoqiangone 2008-01-25
VB老久没用了,
友情up
  • 打赏
  • 举报
回复
olivesoup 2008-01-25
4楼的真是无耻,遇到多次了就会拷他人的回答,剽窃他人劳动成果!


每天还要两个号倒分!




还要发烂贴!




举报你的帖子都挂出来了,还在干这勾当!



我终于知道人竟然可以无耻到这种地步!
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2008-01-25 10:50
社区公告
暂无公告