C#加密算法改成Java实现,谁来帮我下啊?

jueding920 2010-05-12 04:27:41
using System;

namespace CEWebService
{
/// <summary>
/// 字符串加密类
/// </summary>
public class Encryption
{
//机密密钥
private static Byte[] XorKey = { 0xB2, 0x09, 0xAA, 0x55, 0x93, 0x6D, 0x84, 0x47 };

/// <summary>
/// 字符串加密
/// </summary>
/// <param name="Str">明文</param>
/// <returns>密文</returns>
public static string Enc(string Str)
{
string res = "";
int j = 0;
foreach (char c in Str)
{
res += (Convert.ToByte(c) ^ XorKey[j]).ToString("X");
j = (j + 1) % 8;
}
return res;
}

/// <summary>
/// 字符串解密
/// </summary>
/// <param name="Str">密文</param>
/// <returns>明文</returns>
public static string Denc(string Str)
{
string res = "";
int j = 0;
for (int i = 1; i <= Str.Length / 2; i++)
{
res += Convert.ToChar((Convert.ToInt32(("0x" + Str.Substring(i * 2 - 1, 2))) ^ XorKey[j]));
j = (j + 1) % 8;
}
return res;
}
}
}
...全文
130 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jueding920 2010-05-13
  • 打赏
  • 举报
回复
Delphi的实现是这样的。。。就是Java不知道怎么就不对
有没那个高手帮我把Java的写出来下啊
测试结果:1加密后是83
unit uPubStrChg;

interface

uses
SysUtils;

const
XorKey: array[0..7] of Byte = ($B2, $09, $AA, $55, $93, $6D, $84, $47);

function Enc(Str: string): string;
function Denc(Str: string): string;

implementation

function Enc(Str: string): string;
var
i, j: Integer;
begin
Result := '';
j := 0;
for i := 1 to Length(Str) do
begin
Result := Result + IntToHex(Byte(Str[i]) xor XorKey[j], 2);
j := (j + 1) mod 8;
end;
end;

function Denc(Str: string): string;
var
i, j: Integer;
begin
Result := '';
j := 0;
for i := 1 to Length(Str) div 2 do
begin
Result := Result + Char(StrToInt('$' + Copy(Str, i * 2 - 1, 2)) xor
XorKey[j]);
j := (j + 1) mod 8;
end;
end;

end.

ouyangxiaokang6 2010-05-13
  • 打赏
  • 举报
回复
这是加密的,你把C#对应的语法,用java的语法转化就可以了。要一模一样才可以。

public static String Enc(String Str) {
String res = "";
int j = 0;
for (char c : Str.toCharArray()) {
res += String.valueOf(Integer.toHexString((byte) c ^ XorKey[j])).substring(6);
j = (j + 1) % 8;
}
return res;
}
jueding920 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keeya0416 的回复:]
C# 代码我这出异常 解码部分说参数格式不对
[/Quote]
可在我是正常的啊!C#那部分代码肯定是没错的
我是用.NET 2.0的框架写的
现在还在用很正常
keeya0416 2010-05-12
  • 打赏
  • 举报
回复
C# 代码我这出异常 解码部分说参数格式不对
keeya0416 2010-05-12
  • 打赏
  • 举报
回复
我跑你这代码的时候报异常了呢
jueding920 2010-05-12
  • 打赏
  • 举报
回复
我自己改写的一个,可以加密后的字符跟C#的不一样。。。高手帮忙啊

public class Encryption {

private static byte[] XorKey = { (byte) 0xB2, (byte) 0x09, (byte) 0xAA,
(byte) 0x55, (byte) 0x93, (byte) 0x6D, (byte) 0x84, (byte) 0x47 };

public static String Enc(String Str) {
String res = "";
int j = 0;
for (char c : Str.toCharArray()) {
res += String.valueOf((byte) c ^ XorKey[j]);
j = (j + 1) % 8;
}
return res;
}

public static String Denc(String Str) {
String res = "";
int j = 0;
for (int i = 1; i <= Str.length() / 2; i++) {
res += (char) (Integer
.parseInt(("0x" + Str.substring(i * 2 - 1, 2))) ^ XorKey[j]);
j = (j + 1) % 8;
}
return res;
}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧