用Java实现C#加密

wonderofsky 2015-09-25 03:31:42
服务器端数据库保存的加密密码是别人用C#实现的,代码不能更改,我现在要做移动客户端,问下用Java怎么实现该加密?
C#加密代码如下所示:
using System;
using System.Security.Cryptography;
using System.Text;

namespace GCIT.Common.DEncrypt
{
public class DESEncrypt
{
public DESEncrypt()
{
}
#region ========加密========
/// <summary>
/// 加密
public static string Ecrypt()
{
return Encrypt("global");
}

public static string Encrypt(string Text)
{
return Encrypt(Text, "GCITSOFT");
}

/// <summary>
/// 加密数据
public static string Encrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray;
inputByteArray = Encoding.Default.GetBytes(Text);
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
#endregion
}
}

这应该是外面是一个DES加密,然后里面嵌套了MD5算法,这个用Java怎么实现?
主要这两段代码是啥意思?

des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
...全文
604 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37943996 2017-03-17
  • 打赏
  • 举报
回复
我也遇到了.net转java的项目了,加密居然是一个模子刻出来的,能不能麻烦版主把java代码贴出来看看?
wonderofsky 2015-10-08
  • 打赏
  • 举报
回复
引用 9 楼 bartholomew4 的回复:
这2个是加密的
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
这里的才是载入内存的,当然java的模式和C#的肯定不同,别问我C#里面具体是怎么回事情,微软不开源的
终于搞定了,就是缺这个字符串,就是通过这个方法System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5")得到的字符串,之前一直不知道这是啥。
bartholomew4 2015-09-29
  • 打赏
  • 举报
回复
这2个是加密的
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
这里的才是载入内存的,当然java的模式和C#的肯定不同,别问我C#里面具体是怎么回事情,微软不开源的
wonderofsky 2015-09-28
  • 打赏
  • 举报
回复
引用 6 楼 bartholomew4 的回复:
其实你要看的不是加密算法,是数据库的配置文件的内存加载方法。。。。
不好意思,不小心点错了,问下数据库的内存加载方法是这两段代码么?
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                        HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                        HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
网上倒是有一个跟这个C#加密代码差不多了,但是少了一个GetBytes()括号里面的那段代码,就是这个 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5"),这=这段代码在Java中有同样功能的方法么?
bartholomew4 2015-09-28
  • 打赏
  • 举报
回复
怎么加密文件并可逆破解,这类的java能百度到一堆的,内存加载hibernate配置文件我当初是去外国网站翻了几天才找到的。。。。
bartholomew4 2015-09-28
  • 打赏
  • 举报
回复
其实你要看的不是加密算法,是数据库的配置文件的内存加载方法。。。。
tony4geek 2015-09-28
  • 打赏
  • 举报
回复
和以前的一样吗,因为C# 和java 的api 不一样, 具体看懂他的思路,重新写一个。
bartholomew4 2015-09-28
  • 打赏
  • 举报
回复
引用 3 楼 WonderosSky 的回复:
引用 1 楼 bartholomew4 的回复:
其实很简单啊,就是自己写个加密算法,把数据库配置加密了,然后写个接解密算法,在项目启动注册数据信息时去解析加密数据,解析出来的配置直接加载进内存生效就好了
没这么容易吧,关键是Java中好像没有对应功能实现的类,这个不知道怎么写才好。
java加密包多的事,而且加密算法java写法百度一下也是一大堆的,其他的框架配置不清楚,起码JDBC可以实现,hibernate也可以实现
wonderofsky 2015-09-26
  • 打赏
  • 举报
回复
引用 1 楼 bartholomew4 的回复:
其实很简单啊,就是自己写个加密算法,把数据库配置加密了,然后写个接解密算法,在项目启动注册数据信息时去解析加密数据,解析出来的配置直接加载进内存生效就好了
没这么容易吧,关键是Java中好像没有对应功能实现的类,这个不知道怎么写才好。
这个逗b 2015-09-25
  • 打赏
  • 举报
回复
百度有别人写好的。复制粘贴
bartholomew4 2015-09-25
  • 打赏
  • 举报
回复
其实很简单啊,就是自己写个加密算法,把数据库配置加密了,然后写个接解密算法,在项目启动注册数据信息时去解析加密数据,解析出来的配置直接加载进内存生效就好了

13,100

社区成员

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

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