DES加密 windws上加密,linux不能解密

问题描述

我在windows上做的加密到linux上解密总是失败,报java.lang.Exception:padblockcorrupted

解决方案

解决方案二:
如果代码不保密的话,请贴出相关DES加密和解密的代码,以及测试用的原文数据、加密密钥,以及你在Windows上用该密钥和原文进行DES加密后的密文。
解决方案三:
引用1楼bao110908的回复:

如果代码不保密的话,请贴出相关DES加密和解密的代码,以及测试用的原文数据、加密密钥,以及你在Windows上用该密钥和原文进行DES加密后的密文。

顶一下
解决方案四:
importjava.security.Key;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;publicclassDesEncrypt{privatestaticKeykey;privatefinalstaticStringKEY_STRING="cssc2010cssc2010zcec";privatestaticDesEncryptinstance=null;publicstaticDesEncryptgetInstance(){if(instance==null){instance=newDesEncrypt();}returninstance;}publicDesEncrypt(Stringstr){//StringkeyString="ACDAFAAD";getKey(str);//生成密匙}privateDesEncrypt(){getKey(KEY_STRING);//生成密匙}/***根据参数生成KEY*/publicvoidgetKey(StringstrKey){try{KeyGenerator_generator=KeyGenerator.getInstance("DES");_generator.init(newSecureRandom(strKey.getBytes()));key=_generator.generateKey();_generator=null;}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}}/***加密String明文输入,String密文输出*/publicStringgetEncString(StringstrMing){byte[]byteMi=null;byte[]byteMing=null;StringstrMi="";BASE64Encoderbase64en=newBASE64Encoder();try{byteMing=strMing.getBytes("UTF8");byteMi=this.getEncCode(byteMing);strMi=base64en.encode(byteMi);}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}finally{base64en=null;byteMing=null;byteMi=null;}returnstrMi;}/***解密以String密文输入,String明文输出**@paramstrMi*@return*/publicStringgetDesString(StringstrMi){BASE64Decoderbase64De=newBASE64Decoder();byte[]byteMing=null;byte[]byteMi=null;StringstrMing="";try{byteMi=base64De.decodeBuffer(strMi);byteMing=this.getDesCode(byteMi);strMing=newString(byteMing,"UTF8");}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}finally{base64De=null;byteMing=null;byteMi=null;}returnstrMing;}/***加密以byte[]明文输入,byte[]密文输出**@parambyteS*@return*/publicstaticbyte[]getEncCode(byte[]byteS){byte[]byteFina=null;Ciphercipher;try{cipher=Cipher.getInstance("DES");cipher.init(Cipher.ENCRYPT_MODE,key);byteFina=cipher.doFinal(byteS);}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}finally{cipher=null;}returnbyteFina;}/***解密以byte[]密文输入,以byte[]明文输出**@parambyteD*@return*/publicstaticbyte[]getDesCode(byte[]byteD){Ciphercipher;byte[]byteFina=null;try{cipher=Cipher.getInstance("DES");cipher.init(Cipher.DECRYPT_MODE,key);byteFina=cipher.doFinal(byteD);}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}finally{cipher=null;}returnbyteFina;}publicstaticvoidmain(Stringargs[]){DesEncryptdes=DesEncrypt.getInstance();Stringstr1="ASDDasdadadadada你的明aaasda啊大大大大的dadadq使用手册欠妥人ASDADA";//DES加密Stringstr2=des.getEncString(str1);str2="sPtE/3vQPyiRYXfyUIVFPx0T9Ya3Uhzg0bNQ+4f4ZvTeOII6aE7+aVchiC3s67T0C8cklLjIEfxiXE3O3gXrwg==";System.out.println("根据密钥解密后的明文:"+des.getDesString(str2));}}
解决方案五:
你这个方法有问题!/***根据参数生成KEY*/publicvoidgetKey(StringstrKey){try{KeyGenerator_generator=KeyGenerator.getInstance("DES");_generator.init(newSecureRandom(strKey.getBytes()));key=_generator.generateKey();_generator=null;}catch(Exceptione){thrownewRuntimeException("ErrorinitializingSqlMapclass.Cause:"+e);}}

使用KeyGenerator生成的密钥是随机密钥,并不是你传入的密钥,更改一下:publicKeytoKey(byte[]key)throwsException{KeySpecdks=newDESKeySpec(key);SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");returnkeyFactory.generateSecret(dks);}

DES属于对称加密算法的块加密,密钥应该是8个字节。privatefinalstaticStringKEY_STRING="cssc2010cssc2010zcec";这样的密钥在DES中是不合法的。

时间: 2024-09-15 12:04:35

DES加密 windws上加密,linux不能解密的相关文章

如何在Linux系统上加密文件和目录

  加密类型 我们主要有两种加密文件和目录的方法.一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice).对我而言,这是个十分不错的方法,你不需要为了启用或者测试加密而把所有一切重新安装一遍.然而,文件系统级别的加密也有一些缺点.例如,许多现代应用程序会缓存(部分)文件你硬盘中未加密的部分中,比如交换分区./tmp和/var文件夹,而这会导致隐私泄漏. 另外一种方式,就是所谓的全盘加密,这意味着整个磁盘都会被加密(可能除了主引导记录外).全盘加密

9999:谁有c++版des加密源代码 可以跟java版des加密库匹配 可以互相加解密

问题描述 9999:谁有c++版des加密源代码可以跟java版des加密库匹配可以互相加解密急需:万分感谢!本人在网上已经找了很多个版本,都无法跟java版des库加密出来的结果一致.最好的一个版本是:(40字节的明文(如:100@05963010591062666@013001791717991233)8位的密钥)c++加密出来密文是40个字节.java加密出来的密文是48个字节.前40个字节都是一致的.java加密调用代码如下:[DESKeySpecdks=newDESKeySpec(ra

字符串-网页上传文件时怎么把文件加密后上传

问题描述 网页上传文件时怎么把文件加密后上传 我想在html页面选择一个上传文件,在js获得这个文件的信息,然后对这个文件进行对称加密后再上传.初步想法是把文件是以数据流发到后台再生成一个完整文件的,但怎么获得这个文件的数据流?另一个想法是把先把文件转成字符串,然后加密,再把字符串生成文件2,然后上传,但怎样才能转成字符串并且把加密的字符串转回文件?请大神解答,感激不尽 解决方案 在Web架构中如果要保密, 最简单最安全的方法是使用HTTPS协议. 用js获取文件数据流是可以的, 但需要新版浏览

c# 上传文件加密-C#上传到ftp文件加密问题

问题描述 C#上传到ftp文件加密问题 上传功能:private void Upload(string filename) //上传功能 { FileInfo fileInf = new FileInfo(filename); string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name; //uri登录方式 FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebR

base64-Base64在java平台和android平台上加密的结果为什么不一样?

问题描述 Base64在java平台和android平台上加密的结果为什么不一样? java平台上: System.out.println(new String(Base64.encodeBase64("矿大CUMT".getBytes()))); 结果为:v/O080NVTVQ= android平台上: String d=new String(Base64.encodeBase64("矿大CUMT".getBytes())); System.out.println

怎样给PHP源代码加密?PHP二进制加密与解密的解决办法_php实例

分享2种PHP的源码加密方式,此加密方法支持任意PHP版. 注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可. 复制代码 代码如下: <?php   function encode_file_contents($filename) {       $type=strtolower(substr(strrchr($filename,'.'),1));       if ('php' == $type && is_file($filename) &&

Android 安全加密:对称加密详解_Android

Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 以上学习所有内容,对称加密.非对称加密.消息摘要.数字签名等知识都是为了理解数字证书工作原理而作为一个预备知识.数字证书是密码学里的终极武器,是人类几千年历史总结的智慧的结晶,只有在明白了数字证书工作原理后,才能理解Https 协议的安全通讯机制.

Android对称加密与非对称加密_Android

凯撒密码 1. 介绍 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文.例如,当偏移量是3 的时候,所有的字母A 将被替换成D,B 变成E,由此可见,位数就是凯撒密码加密和解密的密钥. 例如:字符串"ABC"的每个字符都右移3 位则变成"DEF",解密的时候"DEF"的每个字符左移3 位即能

Android 安全加密:对称加密详解

Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 以上学习所有内容,对称加密.非对称加密.消息摘要.数字签名等知识都是为了理解数字证书工作原理而作为一个预备知识.数字证书是密码学里的终极武器,是人类几千年历史总结的智慧的结晶,只有在明白了数字证书工作原理后,才能理解Https 协议的安全通讯机制.