当前位置: 首页 > news >正文

已经有网站域名如何做网页营销顾问公司

已经有网站域名如何做网页,营销顾问公司,内容营销的概念,国外网站有哪些推荐的Java环境本身并不直接支持DESede/ECB/ZeroPadding。 不过,可以通过以下几种方式来实现DESede/ECB/ZeroPadding: 手动实现填充和去除填充:如前面示例代码所示,在加密之前进行填充,在解密之后去除填充。这是一个通用的方…

Java环境本身并不直接支持DESede/ECB/ZeroPadding。
不过,可以通过以下几种方式来实现DESede/ECB/ZeroPadding:

  1. 手动实现填充和去除填充:如前面示例代码所示,在加密之前进行填充,在解密之后去除填充。这是一个通用的方法,可以应用于任何不支持特定填充方式的场景。
  2. 使用第三方库:有些第三方库可能会提供对不同填充方式的支持,比如Bouncy Castle。你可以检查最新版本的Bouncy Castle是否支持ZeroPadding,但通常情况下依然需要自己处理这个填充逻辑。

手动填充

package com.alited.project.gateway.sign;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import java.security.Security;
import java.util.Base64;/*** @author Wen先森* @version 1.0* @date 2024/6/13 14:21* @description: 手动补0*/
public class DesSign2 {public static void main(String[] args) throws Exception {Security.addProvider(new BouncyCastleProvider());// 自定义3DES密钥字符串(24字节长)String customKeyString = "123456789012345678901234"; // 24字节的密钥byte[] keyBytes = customKeyString.getBytes();// 根据密钥字符串生成SecretKey对象SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DESede");SecretKey secretKey = secretKeyFactory.generateSecret(new DESedeKeySpec(keyBytes));// 原始数据String originalData = "Hello, 3DES!";System.out.println("原始数据: " + originalData);// 加密String encryptedData = encrypt(originalData, secretKey);System.out.println("加密后数据: " + encryptedData);// 解密String decryptedData = decrypt(encryptedData, secretKey);System.out.println("解密后数据: " + decryptedData);}/*** 手动实现ZeroPadding*/private static byte[] zeroPad(byte[] data, int blockSize) {int paddingLength = blockSize - (data.length % blockSize);byte[] paddedData = new byte[data.length + paddingLength];System.arraycopy(data, 0, paddedData, 0, data.length);return paddedData;}/*** 去除ZeroPadding*/private static byte[] removeZeroPadding(byte[] data) {int i = data.length - 1;while (i >= 0 && data[i] == 0) {i--;}byte[] unpaddedData = new byte[i + 1];System.arraycopy(data, 0, unpaddedData, 0, i + 1);return unpaddedData;}/*** 加密方法*/public static String encrypt(String data, SecretKey key) throws Exception {Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding", "BC");cipher.init(Cipher.ENCRYPT_MODE, key);byte[] paddedData = zeroPad(data.getBytes(), cipher.getBlockSize());byte[] encryptedBytes = cipher.doFinal(paddedData);return Base64.getEncoder().encodeToString(encryptedBytes);}/*** 解密方法*/public static String decrypt(String data, SecretKey key) throws Exception {Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding", "BC");cipher.init(Cipher.DECRYPT_MODE, key);byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(data));byte[] unpaddedData = removeZeroPadding(decryptedBytes);return new String(unpaddedData);}
}

使用第三方库

首先,确保你已经在 Maven 项目中添加了 Bouncy Castle 的依赖:

<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.68</version>
</dependency>

然后使用第三方库自带的零填充方法

package com.alited.project.gateway.sign;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import java.security.Security;
import java.util.*;/*** @author Wen先森* @version 1.0* @date 2024/6/13 14:21* @description:*/
public class DesSign {public static void main(String[] args) throws Exception {Security.addProvider(new BouncyCastleProvider());// 自定义3DES密钥字符串(24字节长)String customKeyString = "123456789012345678901234"; // 24字节的密钥byte[] keyBytes = customKeyString.getBytes();// 根据密钥字符串生成SecretKey对象SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DESede");SecretKey secretKey = secretKeyFactory.generateSecret(new DESedeKeySpec(keyBytes));// 原始数据String originalData = "Hello, 3DES!";System.out.println("原始数据: " + originalData);// 加密String encryptedData = encrypt(originalData, secretKey);System.out.println("加密后数据: " + encryptedData);// 解密String decryptedData = decrypt(encryptedData, secretKey);System.out.println("解密后数据: " + decryptedData);}/*** 加密方法*/public static String encrypt(String data, SecretKey key) throws Exception {Cipher cipher = Cipher.getInstance("DESede/ECB/ZeroBytePadding", "BC");cipher.init(Cipher.ENCRYPT_MODE, key);byte[] encryptedBytes = cipher.doFinal(data.getBytes());return Base64.getEncoder().encodeToString(encryptedBytes);}/*** 解密方法*/public static String decrypt(String data, SecretKey key) throws Exception {Cipher cipher = Cipher.getInstance("DESede/ECB/ZeroBytePadding", "BC");cipher.init(Cipher.DECRYPT_MODE, key);byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(data));return new String(decryptedBytes);}
}
http://www.khdw.cn/news/44240.html

相关文章:

  • 设计网站公司的账务处理seo内部优化包括哪些内容
  • 个人又什么办法做企业网站可以商用的电视app永久软件
  • 三网合一网站远吗百度热搜榜今日头条排名
  • 做网站的开题报告百度竞价入口
  • 新闻发布稿成都网站seo报价
  • 网站建设 psd广州网页seo排名
  • 怎么查网站是用什么语言做的seo就业前景如何
  • 做服务器的网站都有哪些功能线上广告推广平台
  • 浙江建筑信息网查询seo排名优化工具
  • 青岛网站制作多少钱一个页面优化算法
  • 连接国外网站做端口映射搜外滴滴友链
  • ae模板下载网站营销策划与运营方案
  • 通过阿里云建设企业网站怎么做推广和宣传
  • 借个公司邮箱号福州seo外包公司
  • 公积金网站怎么做增员网站推广优化排名公司
  • 网站建设+荆州什么是seo什么是sem
  • 网站维护外包方案百度营销推广靠谱吗
  • 整站下载器 安卓版谷歌推广代理商
  • windows系统做网站企业网站推广可以选择哪些方法
  • 网站不备案备案本地建站软件有哪些
  • 公司做两个网站有影响吗谷歌搜索入口手机版
  • 南京电器网站建设淘宝关键词优化技巧
  • 新网站排名优化怎么做域名注册流程和费用
  • 贵州做网站怎么推广seo白帽优化
  • 用react做的网站上传百度百度一下一下
  • 男和男人怎么做那个视频网站重庆seo主管
  • 怎么形容网站做的很好网络服务提供者收集和使用个人信息应当符合的条件有
  • 嘉定网站设计童程童美少儿编程怎样收费
  • wordpress 标题天津做优化好的公司
  • 建设电商网站所需硬件seo网站编辑是做什么的