tripledes 3main函数的两个参数数具体事例

微信公众号
3DES加密解密调用示例
Loading...
在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:
  jce.jar
  security/US_export_policy.jar
  security/local_policy.jar
  ext/sunjce_provider.jar
  Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中。对于WEB应用,不需要把这些包加到WEB-INF/lib目录下。
  以下是java中调用sun公司提供的3DES加密解密算法的样本代码:
  /*字符串 DESede(3DES) 加密*/
  import java.security.*;
  import javax.crypto.*;
  import javax.crypto.spec.SecretKeyS
  public class ThreeDes {
  private static final String Algorithm = &DESede&; //定义 加密算法,可用 DES,DESede,Blowfish
  //keybyte为加密密钥,长度为24字节
  //src为被加密的数据缓冲区(源)
  public static byte[] encryptMode(byte[] keybyte, byte[] src) {
  //生成密钥
  SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
  //加密
  Cipher c1 = Cipher.getInstance(Algorithm);
  c1.init(Cipher.ENCRYPT_MODE, deskey);
  return c1.doFinal(src);
  catch (java.security.NoSuchAlgorithmException e1) {
  e1.printStackTrace();
  catch (javax.crypto.NoSuchPaddingException e2) {
  e2.printStackTrace();
  catch (java.lang.Exception e3) {
  e3.printStackTrace();
  //keybyte为加密密钥,长度为24字节
  //src为加密后的缓冲区
  public static byte[] decryptMode(byte[] keybyte, byte[] src) {
  //生成密钥
  SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
  //解密
  Cipher c1 = Cipher.getInstance(Algorithm);
  c1.init(Cipher.DECRYPT_MODE, deskey);
  return c1.doFinal(src);
  catch (java.security.NoSuchAlgorithmException e1) {
  e1.printStackTrace();
  catch (javax.crypto.NoSuchPaddingException e2) {
  e2.printStackTrace();
  catch (java.lang.Exception e3) {
  e3.printStackTrace();
  //转换成十六进制字符串
  public static String byte2hex(byte[] b) {
  String hs=&&;
  String stmp=&&;
  for (int n=0;n&b.n++) {
  stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
  if (stmp.length()==1) hs=hs+&0&+
  else hs=hs+
  if (n&b.length-1) hs=hs+&:&;
  return hs.toUpperCase();
  public static void main(String[] args){
  //添加新安全算法,如果用JCE就要把它添加进去
  Security.addProvider(new com.sun.crypto.provider.SunJCE());
  final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58,
  (byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51,
  (byte)0xCB, (byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74,
  (byte)0x98, 0x30, 0x40, 0x36, (byte)0xE2
  }; //24字节的密钥
  String szSrc = &This is a 3DES test. 测试&;
  System.out.println(&加密前的字符串:& + szSrc);
  byte[] encoded = encryptMode(keyBytes, szSrc.getBytes());
  System.out.println(&加密后的字符串:& + new String(encoded));
  byte[] srcBytes = decryptMode(keyBytes, encoded);
  System.out.println(&解密后的字符串:& + (new String(srcBytes)));
相关推荐:1、2、3、4、5、6、7、8、9、10、
猜你喜欢:1、2、3、4、5、6、7、8、9、10、
推荐电影:1、2、3、4、5、6、7、8、9、10、
热门关键词:
随机关键词:
正在加载...
热评文章评分 3.9, 满分 5 星10 票评分 3.9, 满分 5 星10 票评分 3.8, 满分 5 星10 票评分 3.7, 满分 5 星10 票评分 3.7, 满分 5 星10 票
最新微资讯主题 : iOS 3DES加密
亲爱的会员,CocoaChina服务团队真诚希望得到您的反馈:
功能建议报告错误其他在python中怎么实现3des加密 能给个例子最好 我解密时用php的3des 怎么能对上接口_百度知道
在python中怎么实现3des加密 能给个例子最好 我解密时用php的3des 怎么能对上接口
我来帮他解答
其他类似问题
python的相关知识
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁3DES加密 ecb模式 填充方式PKCS5Padding | 代码例子区 - CocoaChina 开发讨论区 - Powered by PHPWind
查看完整版本: [--
3DES加密 ecb模式 填充方式PKCS5Padding
一般IOS里的填充方式是PKCS7Padding (缺少几个字节 就补充几个字节的0),下面分享一下PKCS5Padding(缺少几个字节 就补充几个字节的几)填充方式&pre class=&brush: toolbar: auto-links:&&-(NSData *)EncyptPCK5WithData:(NSData *)encyptData WithKey:(NSString *)key WithError:(NSError **)error {&&&&&&&&Byte *encyByte=(Byte *)[encyptData bytes];&&&&if (error!=nil) {&&&&&&&&*error=&&&&}&&&&NSMutableData *returnData=[[NSMutableData alloc] init];&&&&NSData *desKey = [key dataUsingEncoding:NSUTF8StringEncoding];&&&&{&&&&&&&&if ([desKey length]==16||[desKey length]==24) {&&&&&&&&&&&&unsigned char *src = NULL; /* 补齐后的明文 */&&&&&&&&&&&&unsigned char temp[8];&&&&&&&&&&&&unsigned char block_key[9];&&&&&&&&&&&&Byte *&&&&&&&&&&&&DES_key_schedule ks,ks2,ks3;&&&&&&&&&&&&int reL&&&&&&&&&&&&reLen=8-[encyptData length]%8;&&&&&&&&&&&&src=malloc([encyptData length]+reLen);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ch = reL&&&&&&&&&&&&int len = [encyptData length]+reL&&&&&&&&&&&&memset(src, 0, len);&&&&&&&&&&&&memcpy(src, encyByte, [encyptData length]);&&&&&&&&&&&&memset(src + [encyptData length], ch, reLen);&&&&&&&&&&&&&&&&&&&&&&&&key=(Byte *)[desKey bytes];&&&&&&&&&&&&memcpy(block_key, key + 0, 8);&&&&&&&&&&&&DES_set_key_unchecked((const_DES_cblock*)block_key, &ks);&&&&&&&&&&&&memcpy(block_key, key + 8, 8);&&&&&&&&&&&&DES_set_key_unchecked((const_DES_cblock*)block_key, &ks2);&&&&&&&&&&&&if ([desKey length]==24) {&&&&&&&&&&&&&&&&memcpy(block_key, key + 16, 8);&&&&&&&&&&&&&&&&DES_set_key_unchecked((const_DES_cblock*)block_key, &ks3);&&&&&&&&&&&&}&&&&&&&&&&&&else {&&&&&&&&&&&&&&&&memcpy(block_key, key + 0, 8);&&&&&&&&&&&&&&&&DES_set_key_unchecked((const_DES_cblock*)block_key, &ks3);&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&int count =(reLen+(int)[encyptData length])/ 8;&&&&&&&&&&&&for (int i = 0; i & i++)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&memset(temp, 0, 8);&&&&&&&&&&&&&&&&/* 加密 */&&&&&&&&&&&&&&&&DES_ecb3_encrypt((const_DES_cblock*)(src+8*i), (DES_cblock*)temp, &ks, &ks2, &ks3, DES_ENCRYPT);&&&&&&&&&&&&&&&&[returnData appendBytes:temp length:sizeof(temp)];&&&&&&&&&&&&}&&&&&&&&&&&&free(src);&&&&&&&&&&&&&&&&&&&&}&&&&&&&&else {&&&&&&&&&&&&if (error!=nil) {//&&&&&&&&&&&&&&&&*error=[ErrorCode DesError];&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&return returnD}&/pre&备注:导入第三方openssl库
查看完整版本: [--
Powered by
Gzip disabledYou can

我要回帖

更多关于 污染环境的具体事例 的文章

 

随机推荐