H3C加密算法研究总结
1、 使用的密码算法为DES+BASE64 (DES使用默认的加密密钥“liuan814”) 2、 从IMC-PLAT.jar中提取出的加密和解密代码片段 CommonUtils.class中的: @ExternalInterface
private static final byte[] j = \ private static Cipher k; private static Cipher l;
public static byte[] encryptData(byte[] paramArrayOfByte) {
if (k == null) { try {
DESKeySpec localDESKeySpec = new DESKeySpec(j);
SecretKeyFactory localSecretKeyFactory = SecretKeyFactory.getInstance(\ SecretKey localSecretKey = localSecretKeyFactory.generateSecret(localDESKeySpec); k = Cipher.getInstance(\ k.init(1, localSecretKey);
} catch (Exception localException1) { a.error(null, localException1); return null; }
}
byte[] arrayOfByte = null; try {
arrayOfByte = k.doFinal(paramArrayOfByte); } catch (Exception localException2) { a.error(null, localException2); return null; }
if (arrayOfByte != null) {
return Base64.encodeBase64(arrayOfByte); }
return null; }
@ExternalInterface
public static byte[] decryptData(byte[] paramArrayOfByte) {
if (l == null) { try {
DESKeySpec localDESKeySpec = new DESKeySpec(j);
SecretKeyFactory localSecretKeyFactory = SecretKeyFactory.getInstance(\ SecretKey localSecretKey = localSecretKeyFactory.generateSecret(localDESKeySpec); l = Cipher.getInstance(\ l.init(2, localSecretKey);
} catch (Throwable localThrowable) { return null; }
}
byte[] arrayOfByte = Base64.decodeBase64(paramArrayOfByte); if (arrayOfByte == null) { return null; }
try {
return l.doFinal(arrayOfByte); } catch (Exception localException) { a.error(null, localException); }return null; }
提取出的代码放到eclipse中加工后进行测试。这里需要说明的是,需要把两个文件imc-plat.jar和从网上下载和Cipher加密算法相关的commons-codec-1.8.jar放到jre的相关目录中,我的是:C:\\Program Files\\Java\\jre7\\lib\\ext,在运行的时候会有一些奇怪的错误,解决方式如图。
可用的java代码:desjjm.java package com.h3c.imc.common;
import javax.crypto.spec.DESKeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import org.apache.commons.codec.binary.*;
public class desjjm {
private static final byte[] j = \private static Cipher k; private static Cipher l;
//加密算法
public static byte[] encryptData(byte[] paramArrayOfByte) {
if (k == null) { try {
DESKeySpec localDESKeySpec = new DESKeySpec(j);
SecretKeyFactory localSecretKeyFactory = SecretKeyFactory.getInstance(\ SecretKey localSecretKey = localSecretKeyFactory.generateSecret(localDESKeySpec); k = Cipher.getInstance(\
k.init(1, localSecretKey);
} catch (Exception localException1) { return null; } }
byte[] arrayOfByte = null; try {
arrayOfByte = k.doFinal(paramArrayOfByte); } catch (Exception localException2) { //a.error(null, localException2); return null; }
if (arrayOfByte != null) {
return Base64.encodeBase64(arrayOfByte); }
return null; }
//解密算法
public static byte[] decryptData(byte[] paramArrayOfByte) {
if (l == null) { try {
DESKeySpec localDESKeySpec = new DESKeySpec(j);
SecretKeyFactory localSecretKeyFactory = SecretKeyFactory.getInstance(\ SecretKey localSecretKey = localSecretKeyFactory.generateSecret(localDESKeySpec); l = Cipher.getInstance(\ l.init(2, localSecretKey);
} catch (Throwable localThrowable) { return null; } }
byte[] arrayOfByte = Base64.decodeBase64(paramArrayOfByte); if (arrayOfByte == null) { return null; }
try
{
return l.doFinal(arrayOfByte); } catch (Exception localException) { }return null; }
public static void main(String[] args) { //演示加密算法 String mwpass=\ byte[] jmpass; jmpass=encryptData(mwpass.getBytes()); String dispjmpass; dispjmpass = new String(jmpass); System.out.println(dispjmpass); //演示解密算法 byte[] encryptedpass;//已加密字符串 byte[] realpass;//实际密码二进制串 String realpassStr;//实际密码字符串 String encryptedpassStr=\ encryptedpass = encryptedpassStr.getBytes(); realpass=decryptData(encryptedpass); realpassStr=new String(realpass); System.out.println(realpassStr); //Base64算法测试 //加密 String str= \为要加密的字符串 byte[] b = Base64.encodeBase64(str.getBytes()); System.out.println(new String(b)); //解密 str = \为要解密的字符串 b = Base64.decodeBase64(str.getBytes()); System.out.println(new String(b)); } }
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新幼儿教育H3C-cams DES加密算法研究总结 全文阅读和word下载服务。
相关推荐: