3DES加密解密

3des加密解密 c语言3des加密 阅读详情
package test;
import java.io.ByteArrayOutputStream;
import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
    
    /**
    *字符串 DESede(3DES) 加密
    */
    public class Test3DES {
        private static final String Algorithm = "DESede"; // 定义 加密算法,可用 DES,DESede,Blowfish
        private static final String hexString="0123456789ABCDEF";
        /**
         *                                                  
         * @param keybyte  加密密钥,长度为24字节
         * @param src     字节数组(根据给定的字节数组构造一个密钥。 )
         * @return
         */
        public static byte[] encryptMode(byte[] keybyte, byte[] src) {
            try {
                // 根据给定的字节数组和算法构造一个密钥
                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();
            }
            return null;
        }
    
        /**
         *
         * @param keybyte 密钥
         * @param src       需要解密的数据
         * @return
         */
        public static byte[] decryptMode(byte[] keybyte, byte[] src) {
            try {
                // 生成密钥
                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();
            }
            return null;
        }
    
        /**
         * 字符串转为16进制
         * @param str
         * @return
         */
        public static String encode(String str)
        {
            //根据默认编码获取字节数组
            byte[] bytes=str.getBytes();
            StringBuilder sb=new StringBuilder(bytes.length*2);
    
            //将字节数组中每个字节拆解成2位16进制整数
            for(int i=0;i<bytes.length;i++)
            {
                sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
                sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
            }
            return sb.toString();
        }
        /**
         *
         * @param bytes
         * @return
         * 将16进制数字解码成字符串,适用于所有字符(包括中文)
         */
        public static String decode(String bytes)
        {
            ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
            //将每2位16进制整数组装成一个字节
            for(int i=0;i<bytes.length();i+=2)
                baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
            return new String(baos.toByteArray());
        }
    
        // 转换成十六进制字符串
        public static String byte2hex(byte[] b) {
            String hs = "";
            String stmp = "";
            for (int n = 0; n < b.length; n++) {
                stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
                if (stmp.length() == 1)
                    hs = hs + "0" + stmp;
                else
                    hs = hs + stmp;
                if (n < b.length - 1)
                    hs = hs + ":";
            }
            return hs.toUpperCase();
        }
    
        public static void main(String[] args) {
            // 添加新安全算法,如果用JCE就要把它添加进去
            //这里addProvider方法是增加一个新的加密算法提供者(个人理解没有找到好的答案,求补充)
//            Security.addProvider(new com.sun.crypto.provider.SunJCE());
            //byte数组(用来生成密钥的)
            final byte[] keyBytes = { 0x11, 0x22, 0x4F, 0x58, (byte)0x88, 0x10,
                    0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD,
                    0x55, 0x63, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,
                    (byte) 0xE2 };
            String szSrc = "This";
            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));
            //------------------------------------------------------------
            System.out.println("---------------------------------------");
            String byt="字符串转换为16进制";
            byt=encode(byt);
            System.out.println(byt);
            byt=decode(byt);
            System.out.println(byt);
    
        }
    }
   

android加密解密算法之3DES算法用例 android加密算法很多:DES ,AES,3DES等等。详情请google,baidu。 des的使用安全行很低,再次我们详细了解下3DES. 3DES顾名思义,就是对des加密算法进行得改进,对每个数据进行了3次des加密,降低了破解的难度,从而提高数据的安全性。 首先写一个utils工具,直接可以使用 import java.io.UnsupportedEncodingExce 阅读详情

相关推荐

【Python脚本】Python自动大麦网抢票,准点原价秒杀演唱会门票,拒绝黄牛交易!从我做起!!!1

你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太难过,今晚有张学友的票,后天还有张杰的票,加油哦!

weixin_45841831的博客 6万+

用java实现3DES加密解密算法

3DES加密也称三重加密,其底层加密算法与DES相同,只不过它的密钥长度是168位。由于在DES加密算法中,64位密钥中每一个字节的第8位是奇偶校验位,所以每个字节中只有后7位起密钥作用,实际是56位密钥长度。但是在3DES加密算法中,需要三个这样的密钥长度才能实现三重加密操作,所以3DES的密钥长度是56✖3=168,算上每个字节的奇偶校验位,则应该输入的密钥长度是168+24=192,即24个...

qq_38883271的博客 5413

用Multisim和74192芯片复刻经典:手把手教你搭建篮球24秒违例计时器(附仿真文件)

本文详细介绍了如何使用Multisim仿真平台和74192芯片构建篮球24秒违例计时器,涵盖时序逻辑电路设计、核心器件选型、仿真环境搭建及调试技巧。通过分步指导,帮助读者掌握数字电路设计的关键技术,并附赠仿真文件供实践参考。

weixin_27014595的博客 277

Java | 使用 3DES 进行加密解密 (附源码)

Java | 使用 3DES 进行加密解密 (附源码) 本文主要用了两个参数进行加密解密,一个key:秘钥,一个iv:偏移量;如果不想要偏移量的,可以适当去除,使用cipher.init()方法,只传入两个参数即可; cipher.init(Cipher.ENCRYPT_MODE, deskey); 还需要将:(这里只改动 CBC -> EBC) private static final String CIPHER_ALGORITHM = "DESede/CBC/PKCS5Padding"; .

慌途L 8783

AI内容安全机制解析:从破甲现象看模型防护与合规边界

AI内容安全机制是保障人工智能模型合规应用的核心技术,其原理基于多层防护体系。通过意图识别、关键词过滤和多模态检测等技术,系统能够实时监控用户输入和模型输出,有效拦截违规内容。这种机制的技术价值在于平衡模型创造力与内容安全性,确保AI生成内容符合伦理规范。在应用场景上,内容安全机制广泛应用于聊天机器人、内容创作平台和企业级AI系统,防止色情、暴力等有害信息的传播。随着破甲等绕过手法的出现,安全机制需要持续进化以应对指令混淆、上下文污染等新型挑战。本文从技术攻防角度深入分析AI内容安全的实现原理与发展趋势,为

1078

Python开发者必看:5分钟搞定Gemini API的3种调用方式(含代码示例)

本文为Python开发者详细介绍了三种高效调用Gemini API的核心方式:基础同步调用、流式调用和聊天模式,并涵盖多模态应用等高级特性。通过清晰的代码示例和实战场景分析,帮助开发者快速掌握Gemini API的集成与优化,提升AI应用开发效率。

g8f9d0s1a2的博客 1121

Java 3DES加密解密

本博文转载:https://blog.youkuaiyun.com/softwave/article/details/76975272 依赖包 import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.binary.Base64; 算法代码 /** ...

u012949047的博客 2240

uniapp - 解决App端报错reportJSException >>>> exception function:createInstanceContext, exception:white sc

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniApp报错,reportJSException>>>>exceptionfunction:createInstanceContext,exception:whitescreencausecreateinstanceContextfailed,运行自定义基座时白屏,uniapp项目运行白屏reportJSException,检查没问题依旧报错,第三方库插件,组件,uniapp打包调试

🏆 前端领域优质创作者 1万+

基于Java DES与3DES加密解密

DES/3DES属于对称加密算法。3des即用DES进行三重加密。 下面分别用Java代码实现DES加密解密与3DES加密解密,如有错误请指正,谢谢! DES加密解密: /** * DES加密 * @param datasource,加密数据 * @param password,密钥 * @return */ public static byte[] encrypt(byte[...

sh879682的博客 3702

【点云概述】什么是点云、来源、种类、特点、处理?

【点云概述】什么是点云、来源、种类、特点、处理?点云(point cloud)是空间中点的数据集,可以表示三维形状或对象,通常由三维扫描仪获取。点云中每个点的位置都由一组笛卡尔坐标 ( X , Y , Z ) (X, Y, Z) (X,Y,Z)描述,有些可能含有色彩信息 ( R , G , B ) (R, G, B) (R,G,B)或物体反射面强度(Intensity)信。

智慧空间实验室 9812

通用抓取————6D位姿估计

这意味着算法在没有物体的先验知识(如 CAD 模型)的情况下,依然能够通过神经网络捕捉物体的外观、形状和几何特征,生成相关的 6D 位姿估计。通过输入物体类别的描述,算法能够推断出该类别物体的位姿和尺度,无需特定物体的 CAD 模型。在这个坐标空间中,物体的位姿和尺度都是已知的,基于这个标准化表示,算法可以对输入图像中的物体进行 6D 位姿和尺寸的估计。○优势: ICP 是一种非常有效的位姿优化算法,特别适合精细调整物体的位姿,确保最终估计的位姿与真实物体的点云或模型高度一致。

具身机器人和通用AI 2376

浅谈3DES加密解密

浅谈3DES加密解密   (注:本文不深入探讨3DES的加密原理,只着重说明在Java中使用3DES加密解密以及常见问题)       从数据安全谈起       当你使用网银时,是否担心你的银行卡会被盗用?     当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露?     作为开发者,编写安全的代码比编写优雅的代码更重要,因为

chen3749102的专栏 4028

3DES加密解密方法

从数据安全谈起       当你使用网银时,是否担心你的银行卡会被盗用?     当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露?     作为开发者,编写安全的代码比编写优雅的代码更重要,因为安全是一切应用之根本!为了确保数据不被侵犯,数据加密/解密技术运用而生。    ——摘录自《Java加密解密的艺术》       所以为了确保数据传输和数据存储的安全,我们可以通过特定的算...

liuyinfei_java的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java 3des解密_Java进行3DES加密解密详解

package com.shanhy.tools.packers;import java.security.Security;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;/*** 3DES加密** @author SHANHY([emailprote...

weixin_42227736的博客 1616

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中3DES加密解密调用示例

 在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:jce.jarsecurity/US_export_policy.jarsecurity/local_policy.jarext/sunjce_provider.jar Java运行时会自动加载这些包,因此对于带main

gonxi的专栏 7739

【亲测免费】 DES/3DES加密解密工具

DES/3DES加密解密工具 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一款用于数据加密和解密的工具,支持单DES加密解密以及3DES加密解密。当密码长度为8字节时,工具将执行DES加密或解密操作。 使用说明 若密码长度为8字节,则进行DES加密或解密。 若密码长度超过8字节,则进行3DES加密或解密。 注意事项 请确保在合适的环境中安全地使用此工具。 请...

gitblog_06732的博客 513

Java中3DES加密解密示例

 在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:jce.jarsecurity/US_export_policy.jarsecurity/local_policy.jarext/sunjce_provider.jar Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环...

iteye_19399的博客 768

java 3des加密_Java实现的3des加密解密工具类示例

本文实例讲述了Java实现的3des加密解密工具类。分享给大家供大家参考,具体如下:package com.gcloud.common;import org.apache.poi.poifs.property.Child;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.*;import ja...

weixin_39580124的博客 375

php js 3des加密解密,怎样使用JS实现3des+base64加密解密算法

这次给大家带来怎样使用JS实现3des+base64加密解密算法,使用JS实现3des+base64加密解密算法的注意事项有哪些,下面就是实战案例,一起来看一下。1. index.html: BASE64编码var str = "网址:http://www.jb51.net";document.write("原始字符串:"+str);var base64 = BASE64.encoder(str)...

weixin_32512933的博客 413

C#和JAVA 3DES加密解密

最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章 一个是C#采用CBC Mode,PKCS7 Paddin

sinat_15155817的专栏 1080

使用Java实现3DES加密解密

3DES又称TripleDES,是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。密钥长度是128位(bit)和192位(bit)。原版DES容易被破解,新的3DES出现,增加了加密安全性,避免被暴力破解。它同样是对称性加密,同样涉及到加密模式和填充方式。加密模式有ECB、CBC、CTR、OFB、CFB。填充方式有PKCS5Padding、PKCS7Padding、ZeroPadding、ISO101

Fantasy 2700
上一篇: 请求一个url 获得返回结果(doPost doGet方式)
下一篇: eclipse相关插件
cheneystudy
博客等级 码龄16年 49粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值