Java使用DES加密解密

2023-10-26

一、DES算法

DES(Data Encryption Standard):数据加密标准,它是由IBM公司研制的一种对称密码算法

DES是一个分组加密算法,典型的DES以64位分组对数据加密,加密和解密用的是用一个算法。

总长度64位8字节,其中8位作为校验码,不参与加密算法。

二、秘钥与加密算法

秘钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据)

加密算法是明文转换为密文的变换函数,同样的秘钥可以用不同的加密算法,得到的密文就不一样

比如凯撒密码,就是将字母循环后移n位,这个n就是一个秘钥,循环后移的方法叫做算法

三、DES加密流程

四、DES加密与解密

提供原始秘钥:长度64位,8字节

    @Test
    public void testDES() throws Exception {
        // 明文
        String plainText = "abcd";
        System.out.println("明文:" + plainText);

        // 提供原始秘钥:长度64位,8字节
        String originKey = "12345678";
        // 根据给定的字节数组构建一个秘钥
        SecretKeySpec key = new SecretKeySpec(originKey.getBytes(), "DES");

        // 加密
        // 1.获取加密算法工具类
        Cipher cipher = Cipher.getInstance("DES");
        // 2.对工具类对象进行初始化,
        // mode:加密/解密模式
        // key:对原始秘钥处理之后的秘钥
        cipher.init(Cipher.ENCRYPT_MODE, key);
        // 3.用加密工具类对象对明文进行加密
        byte[] encipherByte = cipher.doFinal(plainText.getBytes());
        // 防止乱码,使用Base64编码
        String encode = Base64.encodeBase64String(encipherByte);
        System.out.println("加密:" + encode);

        // 解密
        // 2.对工具类对象进行初始化
        cipher.init(Cipher.DECRYPT_MODE, key);
        // 3.用加密工具类对象对密文进行解密
        byte[] decode = Base64.decodeBase64(encode);
        byte[] decipherByte = cipher.doFinal(decode);
        String decipherText = new String(decipherByte);
        System.out.println("解密:" + decipherText);
    }

结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java使用DES加密解密 的相关文章

  • 在 C++ 中将 char 或 string 转换为 bitset

    我正在做 DES 加密的作业 但我似乎无法将字符串转换 更不用说将字符转换为位集了 谁能告诉我如何在 C 中将单个字符转换为位集 下列 char c A std bitset lt 8 gt b c implicit cast to uns
  • 英特尔 SGX 开发者许可和开源软件

    是否可以获得许可的开发人员证书 用于在生产模式下签署经过安全审查 社区开发的开源 SGX 软件二进制文件 并将其发布到 apt 或 rpm 等开源存储库上 我刚刚询问了Intel SGX团队 他们说只有经过验证的供应商才能获得证书并在生产模
  • 使用 shell 脚本进行 CGI 编程

    我需要将文本框的内容传递到变量中 即 在 html 页面的文本框中输入的任何内容都需要传递给变量 这是因为我在 linux shell 编程中调用 HTML 以及 CGI 我需要根据需要操纵该变量 你有什么想法去做吗 我需要做的是 我想获取
  • android 权限 - CHANGE_COMPONENT_ENABLED_STATE

    我需要在我的代码中使用 android permission CHANGE COMPONENT ENABLED STATE 权限 因为我需要更新我的项目的另一个 apk 的组件 但它似乎并不真正适合我 这是我的代码
  • 何时使用filter_input()

    这个问题最初是在评论中提出的here https stackoverflow com questions 768442 php filter input comment 580014 Is 过滤器输入 http www php net ma
  • 防止 PHP 中的目录遍历但允许路径

    我有一个基本路径 whatever foo and GET path 应该是相对的 但是 如何在不允许目录遍历的情况下完成此操作 读取目录 eg 无法正确过滤 好吧 一种选择是比较真实路径 basepath foo bar baz real
  • Android 和 Java 中的 RSA 加密

    我想用 RSA 加密来加密字符串 我的公钥 私钥已生成并存储在数据库中 在android中 我使用这段代码 public static String encryptRSAToString String text String strPubl
  • PHP 中避免代码注入的最佳方法

    我的网站最近遭到了攻击 在我看来 这是一个无辜的代码 那里没有 SQL 调用 所以我不担心 SQL 注入 但显然 SQL 并不是唯一的注入方式 这个网站有一个解释和一些避免代码注入的例子 http www theserverpages co
  • Java keytool / 使用 java 生成密钥的安全性(一般)

    我们使用与 java 安装捆绑在一起的 keytool 来生成密钥以进行非对称 RSA 加密 鉴于近期events https www schneier com blog archives 2013 09 the nsa is brea h
  • 如何在 Strapi 中安全地设置数据库密码?

    Strapi 框架 据我了解 要求在启动时提供数据库密码 通常 密码在database js文件 像这样 module exports env gt defaultConnection default connections default
  • 如何实现帧破坏器?

    我正在寻找一个指南 描述如何实现一个工作框架破坏者 该框架还可以处理浏览器中没有激活 JS 的人 I read 这个问题很好 https stackoverflow com questions 958997但我绝对对 自己不要这样做 或 也
  • 在 Delphi 中使用 SecureZeroMemory

    我明白有一个SecureZeroMemoryC 中的函数 函数实现定义在
  • 用于云服务“沙盒”的 SecurityManager

    All 我正在设计一个基于云的服务 该服务将提供执行客户提交的一些 插件 代码的选项 为了使这项工作正常进行 插件不能威胁系统完整性或有能力访问其他客户端的数据 这一点至关重要 理想情况下 我希望客户端能够提交一个简单的 jar 文件 包含
  • 在运行时执行 C# 或 VB.NET 代码

    最近在 Codility com 上花了一些时间 我突然想到了这个问题 它们如何执行您创建的代码 特别是与 C 和 VB NET 有关的代码 我基本上想知道的是 如何在表单上的文本框中输入一些代码 然后运行该代码 如果没有第三方工具 这可能
  • 对heroku postgresql DB的访问只能仅限于它的heroku应用程序吗?

    由于安全顾问的建议 我最近将一个应用程序从 heroku 迁移到 amazon ec2 然而 他对 Heroku 的了解并不深 疑问仍然存在 对 Heroku PostgreSQL 数据库的访问是否可以限制为只能由应用程序访问 您会推荐 H
  • PHP“记住我”安全漏洞?

    我正在编写一个配备 记住我 的登录表单 到目前为止 我读过的教程 部分是为了确保我做得正确 都说将加密的密码存储在 cookie 中与用户名 然后 每次 PHP 检查当前用户是否未登录时 检查他们的 cookie 并查找这些值 如果用户名与
  • 保护 Azure 云服务配置中的敏感信息

    我们正在使用云服务配置 https learn microsoft com en us previous versions azure reference jj156212 v 3Dazure 100 存储应用程序设置 但我们想保护一些应用
  • 加盐哈希 - 为什么文献中将盐视为夏娃已知的盐?

    标题说明了一切 我不明白 为什么你不应该像密码一样保密你的盐 或者我误解了什么 盐被视为公开的主要是因为没有必要保密 盐的目的主要是使字典攻击变得更加困难 不太实用 在字典攻击中 攻击者对字典中的常用单词进行哈希处理 并 如果他是认真的 用
  • jQuery 漏洞(NVD CVE-2007-2379)

    我们正在使用 jQuery 我在国家漏洞数据库中发现了以下 jQuery 漏洞 http web nvd nist gov view vuln detail vulnId CVE 2007 2379 http web nvd nist go
  • 找不到 Java 安全类

    启动我的程序时 会弹出下一个错误 java lang NoClassDefFoundError 无法初始化类 javax crypto SunJCE b 这意味着这个类丢失了 尽管我手动找到了这个类 可以通过 jar ide 工作 但不能通

随机推荐

  • Android的服务Service

    Android学了太久了 都忘了 复习下四大组件之一的Service 介绍 Android的Service是一种在后台执行长时间运行操作的组件 它可以在没有用户界面的情况下执行任务 并且可以与应用程序的其他组件进行通信 Service通常用
  • openwrt python_Openwrt python,openwrt上使用Python

    需要安装libffi python mini python libffi以及python mini需要安装在python之前 wget c http downloads openwrt org cn backfire 10 03 1 brc
  • fedora上编译运行C文件

    include
  • 达梦管理工具连接远程达梦数据库报6001错误,但是disql可以连接

    问题 使用达梦客户端工具访问服务连接 总是报6001错误 已排除如下问题 1 服务器防火墙限制 2 达梦数据库服务没启动 可以使用 disql testuser 123456 192 168 1 22 5236命令连接 3 最大会话限制 数
  • MyBatis 中的插件如何实现

    MyBatis 是一款优秀的 Java 持久层框架 它提供了许多方便开发的功能 其中包括插件 插件可以用于修改 MyBatis 的默认行为 增强其功能 在 MyBatis 中 我们可以使用 Interceptor 接口和 Intercept
  • 海森矩阵(Hessian matrix)

    转自 http hi baidu com imheaventian item c8591b19907bd816e2f98612 在数学中 海森矩阵 Hessian matrix 或 Hessian 是一个自变量为向量的实值函数的二阶偏导数组
  • python3 pygame_利用python3 的pygame模块实现塔防游戏

    利用python3的pygame模块基本实现塔防游戏的基本功能 包括血量和分数显示 bgm 防御塔建造 防御塔攻击范围内的敌军 暂停和加速功能 由于实在没有素材 用的都是自己截图P的 所以美化不好 但基本保证功能 其中有一个BUG 但不影响
  • linux基础命令操作

    1 将 etc下面所有的文件 文件名是a m开头的 并且是以 conf结尾的文件复制到 data目录下 2 定义一个别名copy 要求当所有用户执行copy时 执行的是以下操作cp r etc root etc 年月日 要求永久生效 年月日
  • 备忘录之在jsp页面中获取链接,url,传递的参数

    如 url szy wsm jsp doJump2 jsp id 666 可以通过jsp页面在head标签之上写入如下代码 在方法中使用 function page mouseenter function var id
  • Unity3D——在Unity3D中使用关键帧动画的注意事项

    1 记录Animation动画复位的一个注意事项 最近想做一个动画的分步播放 但是在实现动画复位时发现以前用的动画复位的代码不起作用了 Animation AnimationObj GetComponent
  • DLLNotFoundException:xxx tolua... 错误打印

    一 DLLNotFoundException介绍 首先区分一个问题只要是与DLLNotFoundException相关的必然是丢失了DLL文件 不管是安卓还是Window还是Mac原理都是一样的 二 Plugins文件夹 既然是跟DLLNo
  • docker 安装 nginx-proxy-manager

    一 拉取镜像 docker pull jc21 nginx proxy manager 二 部署运行 docker run restart always name nginxmanager d p 80 80 p 81 81 p 443 4
  • Ubuntu14.04 安装Android studio

    Ubuntu14 04 安装Android studio Android Studio 官方 Android IDE Android Studio 提供用于为各类 Android 设备开发应用的最快速的工具 利用世界一流的代码编辑 调试 性
  • Linux字符设备驱动file_operations详解

    struct file operations struct file operations在Fs h这个文件里面被定义的 如下所示 struct file operations struct module owner 拥有该结构的模块的指针
  • Js中的枚举

    原文见 Js中的枚举 在JavaScript目前的版本中 没有枚举这个概念 当然 ECMA 262第三版中已经将enum作为关键字保留 然而 如同JavaScript中没有class一样 但我们仍然可以通过间接的方式 JSON来实现它 如下
  • 合并Dwg文件

    尝试用 NET平台C 写个打开其他DWG文件并读取所有内容 打包成块后再插入当前文档的程序 1 打开其他指定文件没问题 2 打包成块程序这里出了问题3 但若是直接在当前文档创建直线 再运行打包成块程序就没问题 不知道是何原因 可有大神出来指
  • 快手磁力金牛和小店通的区别

    手磁力金牛平台是全新电商营销平台磁力金牛 磁力金牛平台将集合快手粉条 小店通 真正打通公域私域流量 实现全站数字化营销 核心提示 磁力金牛平台整合了小店通 粉条的投放链路 公域私域流量融合 磁力金牛平台整合了小店通 粉条的投放链路 公域私域
  • win7 svn服务器搭建过程

    svn简介 https baike baidu com item subversion 7818587 fr aladdin SVN服务端分为 Subversion和VisualSVN Server 这里 我选择了VisualSVN Ser
  • Java笔记:UDP基础使用与广播

    文章目录 目的 作为客户端使用 作为服务器使用 广播 广播地址获取 广播功能演示 总结 目的 UDP是比较基础常用的网络通讯方式 这篇文章将介绍Java中UDP基础使用的一些内容 本文中使用 Packet Sender 工具进行测试 其官网
  • Java使用DES加密解密

    一 DES算法 DES Data Encryption Standard 数据加密标准 它是由IBM公司研制的一种对称密码算法 DES是一个分组加密算法 典型的DES以64位分组对数据加密 加密和解密用的是用一个算法 总长度64位 8字节