- 浏览: 5187498 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2009-08-11
博客:http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
将字符串使用对称加密的方式加一下密,并转化成可显示字符;将加密结果还原为原来的字符串,是可能在很多场合会用到。
下面是一个完成上述功能的工具类,觉得有用可以拿去用。
使用示例:
作者:wallimn 电邮:wallimn@sohu.com 时间:2009-08-11
博客:http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
将字符串使用对称加密的方式加一下密,并转化成可显示字符;将加密结果还原为原来的字符串,是可能在很多场合会用到。
下面是一个完成上述功能的工具类,觉得有用可以拿去用。
package com.wallimn.gyz.util; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; /** * 这个类用来给一个较短的字符串加、解密<br/> * 编码:wallimn 时间:2009-8-12 上午07:43:29<br/> * 版本:V1.0<br/> */ public class KeyUtil { private static final String EncodeAlgorithm = "DES"; private static KeyUtil instance = null; public static KeyUtil getInstance() { if (instance == null) { instance = new KeyUtil(); if (!instance.init()) { instance = null; } } return instance; } private SecretKey key = null; private boolean init() { try { KeyGenerator keygen = KeyGenerator.getInstance(EncodeAlgorithm); SecureRandom random = new SecureRandom(); keygen.init(random); key = keygen.generateKey(); } catch (Exception e) { e.printStackTrace(); } return key != null; } private Cipher getCipher(int mode) { try { Cipher cipher = Cipher.getInstance(EncodeAlgorithm); cipher.init(mode, key); return cipher; } catch (Exception e) { e.printStackTrace(); } return null; } public Cipher getEncodeCipher() { return this.getCipher(Cipher.ENCRYPT_MODE); } public Cipher getDecodeCipher() { return this.getCipher(Cipher.DECRYPT_MODE); } /** * 解密,若输入为null或加/解密过程出现异常,则输出为null <br/> * 作者:wallimn 时间:2009-8-12 上午08:09:44<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * * @param str * @return */ public String decode(String str) { if(str==null)return null; Cipher cipher = getDecodeCipher(); StringBuffer sb = new StringBuffer(); int blockSize = cipher.getBlockSize(); int outputSize = cipher.getOutputSize(blockSize); byte[] src = stringToBytes(str); byte[] outBytes = new byte[outputSize]; int i = 0; try { for (; i <= src.length - blockSize; i = i + blockSize) { int outLength = cipher.update(src, i, blockSize, outBytes); sb.append(new String(outBytes, 0,outLength)); } if (i == src.length) outBytes = cipher.doFinal(); else { outBytes = cipher.doFinal(src, i, src.length - i); } sb.append(new String(outBytes)); return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 加密,若输入为null或加/解密过程出现异常,则输出为null <br/> * 作者:wallimn 时间:2009-8-12 上午08:09:59<br/> * 博客:http://wallimn.iteye.com<br/> * 参数:<br/> * * @param str * @return */ public String encode(String str) { if(str==null)return null; Cipher cipher = getEncodeCipher(); StringBuffer sb = new StringBuffer(); int blockSize = cipher.getBlockSize(); int outputSize = cipher.getOutputSize(blockSize); byte[] src = str.getBytes(); byte[] outBytes = new byte[outputSize]; int i = 0; try { for (; i <= src.length - blockSize; i = i + blockSize) { int outLength = cipher.update(src, i, blockSize, outBytes); sb.append(bytesToString(outBytes, outLength)); } if (i == src.length) outBytes = cipher.doFinal(); else { outBytes = cipher.doFinal(src, i, src.length - i); } sb.append(bytesToString(outBytes)); return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } private String bytesToString(byte[] bs) { if (bs == null || bs.length == 0) return ""; return bytesToString(bs, bs.length); } private String bytesToString(byte[] bs, int len) { if (bs == null || bs.length == 0) return ""; StringBuffer sb = new StringBuffer(); for (int i = 0; i < len; i++) { // System.out.println(bs[i]+":"+String.format("%02X", bs[i])); sb.append(String.format("%02X", bs[i])); } return sb.toString(); } private byte[] stringToBytes(String str) { if (str == null || str.length() < 2 || str.length() % 2 != 0) return new byte[0]; int len = str.length(); byte[] bs = new byte[len / 2]; for (int i = 0; i * 2 < len; i++) { bs[i] = (byte) (Integer.parseInt(str.substring(i * 2, i * 2 + 2), 16) & 0xFF); // System.out.println(str.substring(i * 2, i * 2 + 2)+":"+bs[i]); } return bs; } }
使用示例:
public void testCrypt(){ String str = "wallimn@sohu.com,http://wallimn.iteye.com"; String tmp = KeyUtil.getInstance().encode(str); System.out.println("加密结果:"+ tmp); System.out.println("解密结果:"+KeyUtil.getInstance().decode(tmp )); }
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18697编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2518部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3517两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 18521.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7706一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1288我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3277做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1192写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 4017大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2418一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7578我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2801@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2104转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3093用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1783element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9808示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6696申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5365最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5305springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10465微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
AES,全称Advanced Encryption Standard,即高级加密标准,是一种广泛使用的对称加密算法,用于保护数据的安全性。在本示例中,我们看到的是一系列与AES加密相关的源代码文件和一个明文文本文件。 首先,`aes.c`和`...
- **硬编码解密测试**:对硬编码的加密字符串进行解密测试。 #### 3.2 byte数组与十六进制字符串转换 ```java public static String byteArr2HexStr(byte[] arrB) throws Exception { int iLen = arrB.length; ...
下面我们将深入探讨Java中字符串加密的常用方法、原理以及相关示例。 1. **基础概念** - **明文(Plaintext)**: 需要加密的数据,可以被任何人阅读。 - **密文(Ciphertext)**: 加密后的数据,看起来是无意义的...
在编程领域,中心对称是一种特殊的字符串特性,指的是一个字符串从中心点开始向两边读取,字符顺序完全相同。例如,"abcba" 和 "madam" 都是中心对称的,因为它们分别从中心点'c'和'a'向外读取,都能得到相同的字符...
在C++ Builder 6.0中实现RSA加密字符串,主要涉及以下几个关键知识点: 1. **RSA原理**:RSA算法基于两个大素数的乘积难以分解的数学难题。一对公钥和私钥被生成,公钥用于加密,私钥用于解密。任何人都可以使用...
### C#中使用DES算法加密字符串为定长字符串的方法及代码实现 #### 知识点概述 本文档主要介绍了在C#编程语言中使用DES算法进行字符串加密的具体方法,并提供了完整的代码实现示例。文档中所提到的代码通过.NET...
本示例"Java-Js双向Des对称加密Demo"提供了在Java和JavaScript两个平台间实现DES加密解密的互操作性。下面将详细阐述DES加密解密的核心原理、Java和JavaScript的实现细节以及如何在两者之间进行兼容。 DES是一种块...
### 精彩编程与编程技巧-加密字符串算法 #### 概述 本文将深入探讨一种基于异或(XOR)运算的简单字符串加密技术。该加密方法通过使用密钥来增强安全性,并采用了一些额外的技术手段来增加破解难度。虽然这种方法...
这个压缩包文件中的"加密解密字符串的例子"很可能是提供了一个关于如何在编程中实现字符串加密和解密的示例。接下来,我们将深入探讨加密解密的基础知识以及可能涉及的技术。 1. 加密解密原理: 加密是将明文(可...
Rijndael对称加密算法,也被称为AES(高级加密标准),是现代密码学中广泛使用的对称加密算法。在C#中,可以利用.NET框架提供的System.Security.Cryptography命名空间下的类来实现Rijndael加密和解密。本文将详细...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。在“java+3des加密+和字符串转换...通过实践和理解相关代码示例,你将能够熟练地在Java项目中应用3DES加密和字符串转换功能。
常见的对称加密算法如AES就具备这样的特性。AES加密过程通常包括选择一个密钥、进行预处理、执行多次替换和置换操作等步骤,最后生成密文。解密过程则相反,使用相同的密钥对密文进行反向操作,恢复原始数据。 在VC...
RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1978年发明。RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密...
登录时,用户的密码用明文传输...非对称加密算法常用RSA算法,秘钥使用base64编码成字符串,后端使用jdk8的标准API,前端使用jsencrypt.js进行RSA的对应操作。经过测试,本例中的前后端代码的加密解密计算结果是一致的。
在IT领域,加密和解密字符串是至关重要的技术,尤其在数据安全、网络通信和存储保护方面。本文将深入探讨C++中加密解密字符串的相关知识点。 首先,我们需要理解加密和解密的基本概念。加密是对数据进行编码的过程...
下面是一个简单的 Java 实现非对称加密的示例代码: ```java import javax.crypto.Cipher; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java....
' 加密字符串 Dim plainText As String = "这是需要加密的字符串" Dim plainTextBytes As Byte() = Encoding.UTF8.GetBytes(plainText) Dim encryptor As ICryptoTransform = aesAlg.CreateEncryptor(aesAlg.Key...
### Java中对字符串进行加密和解密的知识点详解 #### 1. 引言 在实际的软件开发过程中,为了确保数据的安全性,经常会遇到需要对数据进行加密和解密的情况,例如保护用户密码或保障网络传输数据的安全。虽然密码学...
在Java中,可以使用`java.net.URLEncoder.encode()`方法对加密字符串进行编码,解码则使用`java.net.URLDecoder.decode()`。 7. **异常处理**:在实际应用中,应更全面地处理可能抛出的异常,包括捕获并记录异常...
在这个示例中,密钥首先是以字符串形式存在,然后通过`Hex.decodeHex()`方法将其从Hex编码转换回原始的字节数组,这是因为AES算法需要字节形式的密钥。如果密钥是经过Hex编码的,那么在使用之前必须进行解码。 接...