哪位大侠帮帮忙把下面java实现的类转为C#实现

问题描述

秘钥类:importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;importsun.misc.BASE64Decoder;publicclassKey{privatestaticStringencryptKey="7EV/Zzutjzg=";publicstaticSecretKeyloadKey()throwsException{BASE64Decoderd=newBASE64Decoder();byte[]b=d.decodeBuffer(encryptKey);DESKeySpecdks=newDESKeySpec(b);SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");returnkeyFactory.generateSecret(dks);}}加密解密类:importjava.io.ByteArrayOutputStream;importjava.io.PrintStream;importjava.util.Properties;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importorg.springframework.beans.factory.FactoryBean;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;publicclassDBEncryptimplementsFactoryBean{privatePropertiesproperties;publicObjectgetObject()throwsException{returngetProperties();}publicClassgetObjectType(){returnProperties.class;}publicbooleanisSingleton(){returntrue;}publicPropertiesgetProperties(){returnthis.properties;}publicvoidsetProperties(PropertiesinProperties){this.properties=inProperties;StringoriginalUsername=this.properties.getProperty("user");StringoriginalPassword=this.properties.getProperty("password");if(originalUsername!=null){StringnewUsername=deEncryptUsername(originalUsername);this.properties.put("user",newUsername);}if(originalPassword!=null){StringnewPassword=deEncryptPassword(originalPassword);this.properties.put("password",newPassword);}}privateStringdeEncryptUsername(StringoriginalUsername){returndCode(originalUsername.getBytes());}privateStringdeEncryptPassword(StringoriginalPassword){returndCode(originalPassword.getBytes());}publicStringeCode(StringneedEncrypt){byte[]result=(byte[])null;try{CipherenCipher=Cipher.getInstance("DES");SecretKeykey=Key.loadKey();enCipher.init(1,key);result=enCipher.doFinal(needEncrypt.getBytes());BASE64Encoderb=newBASE64Encoder();ByteArrayOutputStreambos=newByteArrayOutputStream();b.encode(result,bos);result=bos.toByteArray();}catch(Exceptione){thrownewIllegalStateException("Systemdoesn'tsupportDESalgorithm.");}returnnewString(result);}publicStringdCode(byte[]result){Strings=null;try{CipherdeCipher=Cipher.getInstance("DES");deCipher.init(2,Key.loadKey());BASE64Decoderd=newBASE64Decoder();result=d.decodeBuffer(newString(result));byte[]strByte=deCipher.doFinal(result);s=newString(strByte);}catch(Exceptione){thrownewIllegalStateException("Systemdoesn'tsupportDESalgorithm.");}returns;}publicstaticvoidmain(String[]args){Strings="test";DBEncryptp=newDBEncrypt();StringafterE=p.eCode(s);System.out.println(afterE);System.out.println(p.dCode(afterE.getBytes()));}}

解决方案

解决方案二:
你自己去查c#的des加解密功能
解决方案三:
base64的加密可能问题不大。des的加密,不知道算法差异有多大了。也看不到java的算法。
解决方案四:
N多转换
解决方案五:
C#的c#的des秘钥只能是八位的,但是这个java的是12位的
解决方案六:
引用4楼xiaosa1009348905的回复:

C#的c#的des秘钥只能是八位的,但是这个java的是12位的

哪个人告诉你c#的des秘钥只能是八位的,微软的DES.Key属性写的清清楚楚“此算法支持长度为64位的密钥。”
解决方案七:
用http://www.tangiblesoftwaresolutions.com/里的工具转换出来不行啊!
解决方案八:
引用2楼mjp1234airen4385的回复:

base64的加密可能问题不大。des的加密,不知道算法差异有多大了。也看不到java的算法。

哪里看不到java的算法?有的啊,publicStringeCode(StringneedEncrypt){byte[]result=(byte[])null;try{CipherenCipher=Cipher.getInstance("DES");SecretKeykey=Key.loadKey();enCipher.init(1,key);result=enCipher.doFinal(needEncrypt.getBytes());BASE64Encoderb=newBASE64Encoder();ByteArrayOutputStreambos=newByteArrayOutputStream();b.encode(result,bos);result=bos.toByteArray();}catch(Exceptione){thrownewIllegalStateException("Systemdoesn'tsupportDESalgorithm.");}returnnewString(result);}publicStringdCode(byte[]result){Strings=null;try{CipherdeCipher=Cipher.getInstance("DES");deCipher.init(2,Key.loadKey());BASE64Decoderd=newBASE64Decoder();result=d.decodeBuffer(newString(result));byte[]strByte=deCipher.doFinal(result);s=newString(strByte);}catch(Exceptione){thrownewIllegalStateException("Systemdoesn'tsupportDESalgorithm.");}returns;}这两个就是加密和解密算法
解决方案九:
有人可以帮忙解决这个问题吗?感谢!
解决方案十:
CipherenCipher=Cipher.getInstance("DES");byte[]strByte=deCipher.doFinal(result);Cipher是java里的des加密算法,在C#里没有。你现在的代码里des加密是依靠这个类库实现的。你有Cipher的源码的话,可以考虑在C#里实现。

时间: 2024-10-25 05:55:26

哪位大侠帮帮忙把下面java实现的类转为C#实现的相关文章

求助!哪位大侠帮帮忙吧!

问题描述 哪位大侠能帮我破解个邮箱啊?小弟万分感谢啊!需要破解的邮箱songyang@steb.com.cn万分感谢啊!万分感谢啊!万分感谢啊!万分感谢啊!万分感谢啊!

VRP源代码,小弟急需,麻烦哪位大侠帮帮忙

问题描述 最近刚学习VRP中的算法,请问哪位大侠有pso算法求解VRP的源代码,能否发到我邮箱:287590459@qq.com,不胜感激!其他算法也可以.谢谢 解决方案 解决方案二:该回复于2010-03-17 09:02:30被版主删除

哪位大侠帮帮忙,我的GridView更新时出问题了

问题描述 前几年都是用ASP,出.NET后一直没写过程序,也接触得少了,现在学.NET2有个新问题,怎么都没解决,烦请大侠帮忙解决解决.我有一张学生表:LJXHXM--还有其它字段.上面字段的意思依次是年级.学号.姓名,我用了一个GridView,如下:<asp:GridViewID="myGrid"runat="server"AllowPaging="True"OnSelectedIndexChanged="myGrid_Sel

新手上路!!!跪求, 哪位大侠 帮帮忙 课程设计

问题描述 基于vc++2005制作媒体播放器使用ActiveX控件添加一个多媒体播放器.要求:①能够从磁盘上加载一个视频文件,如avi文件:②具有播放.暂停.继续.停止等常用的播放我的邮箱号15045348434@163.com 解决方案 解决方案二:路过......顶一个...解决方案三:路过...这种问题只能归结于你上课没认真....靠自己吧.解决方案四: 解决方案五:,找源码自己研究比较好

GridView IListSource 不包含任何数据源 //请哪位大侠帮帮忙

问题描述 try{SqlDatada=newSqlData();stringcmdtxt1="select*fromtb_WorkSum";this.GridView1.DataSource=da.ExceDS(cmdtxt1,"tb_WorkSum");this.GridView1.DataKeyNames=newstring[]{"ID"};//this.GridView1.PageIndex=d.NewPageIndex;this.Grid

得到一段java代码,哪位大侠可以帮忙看看它的作用?

问题描述 得到一段java代码,哪位大侠可以帮忙看看它的作用?packageutil;importjava.io.*;importjava.util.Enumeration;importjava.util.Hashtable;importjavax.microedition.io.Connector;importjavax.microedition.io.HttpConnection;importnetpay.a;//Referencedclassesofpackageutil://bpubli

java通过qq服务器发送邮件问题,各路大侠帮帮忙啊!

问题描述 java通过qq服务器发送邮件问题,各路大侠帮帮忙啊! 下面是异常信息: javax.mail.AuthenticationFailedException: 535 Authentication failed at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:648) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMT

mina 在发送长报文时,为什么被截成好几段呢。请大侠帮帮忙。

问题描述 mina在发送长报文时,为什么被截成好几段呢.请大侠帮帮忙. 解决方案 解决方案二:这个是必然的.物理限制,和mina无关.你使用的默认解码器或者自己写的解码器的一个功能,就是将可能的N个物理包,变成一个逻辑包.每个逻辑包,包头应当由标志位(这个逻辑包是什么数据)以及长度位(这个逻辑包长度是多少,个别固定长度的逻辑包,可以省略).每次,解码的时候,读取bytebuffer的头,看看当前解析的是什么包,然后长度是多少,再比较一下,当前的bytebuffer长度够不够,如果不够的话,则将b

tomcat-Tomcat启动不起啊来了,各位大侠帮帮忙

问题描述 Tomcat启动不起啊来了,各位大侠帮帮忙 Tomcat突然启动不了了,各位大神帮帮忙 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:Program FilesJavajdk1.7.0_79bin;C:WindowsSunJavabin;