单片机字符串DES加密时密码是16位字符,C#的DES加密是8位字符

下次自动登录
现在的位置:
& 综合 & 正文
java和C#对16位的十六进制MAckey进行加密解密。 java解密C#用DES加密的字符串
java代码:
package c.m;
import java.security.spec.KeyS
import javax.crypto.C
import javax.crypto.SecretK
import javax.crypto.SecretKeyF
import javax.crypto.spec.DESKeyS
public class DES{
public static void main(String[] args) throws Exception {
//DES加密 16进制字符串
ENCRYPTMethod("5C656FF","1111");
//DES解密---使用ECB模式
test2("A104E4BA4E121B4E","1111","DES/ECB/NoPadding");
* @param HexString
字符串(16位16进制字符串)
* @param keyStr
* @throws Exception
public static void ENCRYPTMethod(String HexString,String keyStr) throws Exception{
byte[] theKey =
byte[] theMsg =
theMsg = hexToBytes(HexString);
theKey = hexToBytes(keyStr);
KeySpec ks = new DESKeySpec(theKey);
SecretKeyFactory kf = SecretKeyFactory.getInstance("DES");
SecretKey ky = kf.generateSecret(ks);
Cipher cf = Cipher.getInstance("DES/ECB/NoPadding");
cf.init(Cipher.ENCRYPT_MODE,ky);
byte[] theCph = cf.doFinal(theMsg);
System.out.println("*************DES加密****************");
System.out.println("密钥
: "+bytesToHex(theKey));
System.out.println("字符串: "+bytesToHex(theMsg));
System.out.println("加密后: "+bytesToHex(theCph));
} catch (Exception e) {
e.printStackTrace();
* @param hexStr
16位十六进制字符串
* @param keyStr
* @param modeStr 解密模式:ECB
* @throws Exception
public static void test2(String hexStr,String keyStr,String modeStr) throws Exception{
String algorithm = modeS
byte[] theKey =
byte[] theMsg =
theMsg = hexToBytes(hexStr);
theKey = hexToBytes(keyStr);
KeySpec ks = new DESKeySpec(theKey);
SecretKeyFactory kf
= SecretKeyFactory.getInstance("DES");
SecretKey ky = kf.generateSecret(ks);
Cipher cf = Cipher.getInstance(algorithm);
cf.init(Cipher.DECRYPT_MODE,ky);
byte[] theCph = cf.doFinal(theMsg);
System.out.println("*************DES解密****************");
System.out.println("密钥
: "+bytesToHex(theKey));
System.out.println("字符串: "+bytesToHex(theMsg));
System.out.println("解密后: "+bytesToHex(theCph));
} catch (Exception e) {
e.printStackTrace();
public static byte[] hexToBytes(String str) {
if (str==null) {
} else if (str.length() & 2) {
int len = str.length() / 2;
byte[] buffer = new byte[len];
for (int i=0; i& i++) {
buffer[i] = (byte) Integer.parseInt(
str.substring(i*2,i*2+2),16);
public static String bytesToHex(byte[] data) {
if (data==null) {
int len = data.
String str = "";
for (int i=0; i& i++) {
if ((data[i]&0xFF)&16) str = str + "0"
+ java.lang.Integer.toHexString(data[i]&0xFF);
else str = str
+ java.lang.Integer.toHexString(data[i]&0xFF);
return str.toUpperCase();
//对MAC进行DES加密
public static string Encrypt_DES16(string str_in_data, string str_DES_KEY) //数据为十六进制
byte[] shuju = new byte[8];
byte[] keys = new byte[8];
for (int i = 0; i & 8; i++)
shuju[i] = Convert.ToByte(str_in_data.Substring(i * 2, 2), 16);
keys[i] = Convert.ToByte(str_DES_KEY.Substring(i * 2, 2), 16);
DES desEncrypt = new DESCryptoServiceProvider();
desEncrypt.Mode = CipherMode.ECB;
//desEncrypt.Key = ASCIIEncoding.ASCII.GetBytes(str_DES_KEY);
desEncrypt.Key =
Buffer =//ASCIIEncoding.ASCII.GetBytes(str_in_data);
ICryptoTransform transForm = desEncrypt.CreateEncryptor();
R = transForm.TransformFinalBlock(Buffer, 0, Buffer.Length);
string return_str = "";
foreach (byte b in R)
return_str += b.ToString("X2");
return_str = return_str.Substring(0, 16);
return return_
catch (Exception e)
&&&&推荐文章:
【上篇】【下篇】Delphi加密算法大全下载_西西软件下载
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
相关软件 /英文/ /英文/ /中文/ /英文/ /英文/ /英文/ /英文/ /英文/ /中文/ /中文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
305.1M&&|&&中文&&|&&8.7
887KB/中文/1.1
Dephi加解密源码大全 2DES_3DES_3DES3_AES_BASE64_BLOWFISH_CRC_DES_MD5_RSA_SHA算法源码。的数据加密技术演示实例:文本加密解密源代码,随便在文本框中输入一段字符,可显示文本加密前的字符和文本加密后的字符,并输出解密后的文本。SHA:环境使用SHA算法加密文件和字符的实例,或许有些朋友对SHA不太熟悉,其实这种算法经常可看到,比如从网上下载的一些DLL文件中,你可点击右键查看DLL属性,在“验证”一栏中,往往可以看到MD5校验码、SHA码、CRC32码等不同的加密算法验证码,当然,不只是DLL文件中,其它的文件像EXE也可以存在这些信息的,所以说SHA加密文件已经普遍,有必要通过本源码学习一下SHA加密的原理和实现方法。RSA:Delphi环境下使用RSA算法加密字符串和文件的例子,代码文件较多,比较完整的例子,位数可设置为:128位、256位、512位、768位、1024位。相信通过这个RSA加密实例,你会学会如何运用Delphi语言进行RSA算法的加密技巧。MD5:Delphi采用MD5 加密的例子,关于MD5,我想不用多说了吧,使用最为广泛的简单加密方法了,遍及WEB开发,MD5不但可对字符串加密,也可对,如果您还对Delphi下的MD5加密不太熟悉的话,那么建议你参考本源码实例,学习一下加密的方法吧。DES:Delphi采用最基本的Des加密字符串的演示实例,典型的DES加密,解密技巧,如果需要二重(双重)加密或者三重加密请点击对应页面下载源码:Delphi双重加密、Delphi三重加密。CRC32-Static:运用Delphi实现的CRC32-Static静态加密实例,来自Delphi软件加密技术中的一个随书实例,代码内包括了一个基本的Crc32表,可取出指定字符串的CRC32校验值,也可取指定的文件的crc32校验值,加密操作步骤相当简单,看运行截图便知。CRC32-DymBlowfish:这是一个使用Blowfish算法进行加密、解密的一个实例,在Delphi中,Blowfish算法的应用你不能不知道。在你输入明文、密钥、密文后,就可实现简单的Blowfish加密过程,学习Delphi的初学者,Blowfish算法加密解密是个应该掌握的加密技术。BASE64:采用BASE64算法流加密,多个字节,可以编码奇数字节和基数字节,把编码好的块写到流中,当然也可进行BASE64算法流的解密,解密的数据输入到流中,还可进行BASE64算法字符串加密,字符串解密等,比较全的BASE64加密与解密实例,仅供参考。AES:Delphi下使用AES加密的方法演示,能用来加密字符串和文件,包括一个密钥三个明文,也可进行反加密,也就是解密的过程。AES字符串加密密钥可以是128位,密钥位192位,密钥为256位,AES算法字符串解密也支持上述位数。3DES33DES2DES:一个书中的实例,Delphi双重DES加密算法演示源程序,源码在D7下直接编译就行了,可以顺利运行。源码主要演示如何在Delphi环境下实现双重的DES加密,允许输入明文的情况下,可输入两个DES密钥,可输入密文后实现加密功能,双重DES 要比单一的DES加密更安全,不容易被破解。
安卓官方手机版
IOS官方手机版
,是平台下著名的快速应用程序开发工具,简称。它的前身,即是时代盛行一时的,最早的版本由美国宝兰公司于年开发。主创者为。功能特色真正的程序员用,聪明的程序员用,这句话是对最经典最实在的描述。被称为第四代
中文 / 5.0M专业反编译Delphi工具DeDeDark 3
英文 / 380.8M说明:这是针对 Delphi XE3(Del
英文 / 150.0MBorland Delphi V7.0 Build 8.1企
英文 / 399MEmbarcadero.Delphi.XE2.RTM.Inc
中文 / 1.3Mdcu2pas是一个反编译delphi的dcu
英文 / 224.2Mdelphi 5 Delphi是著名的Borland
Delphi加密算法大全
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。网站已改版,请使用新地址访问:
DES 强大的DES加密解密程序。
给8位字符作为密钥,
输入任何文件,输出 后的密文 Crypt_De algrithms
238万源代码下载-
&文件名称: DES
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 1912 KB
&&上传时间:
&&下载次数: 16
&&提 供 者:
&详细说明:强大的DES加密解密程序。
给8位字符作为密钥,
输入任何文件,输出加密后的密文。
输入任何文件,输出解密后的明文。
测试过输入可执行文件加密解密后仍然可执行。-Strong DES encryption and decryption process. To 8-bit characters as the key, enter any file, the output encrypted ciphertext. Enter any file, the output decrypted plaintext. Tested after the encryption and decryption of the input executable file is still executable.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&Debug\DES.obj&&.....\DESlxp.exe&&.....\DESlxp.ilk&&.....\DESlxp.obj&&.....\DESlxp.pch&&.....\DESlxp.pdb&&.....\DESlxp.res&&.....\DESlxpDlg.obj&&.....\StdAfx.obj&&.....\vc60.idb&&.....\vc60.pdb&&res\DESlxp.ico&&...\DESlxp.rc2&&DES.cpp&&DES.h&&DESlxp.aps&&DESlxp.clw&&DESlxp.cpp&&DESlxp.dsp&&DESlxp.dsw&&DESlxp.h&&DESlxp.ncb&&DESlxp.opt&&DESlxp.plg&&DESlxp.rc&&DESlxpDlg.cpp&&DESlxpDlg.h&&ReadMe.txt&&resource.h&&StdAfx.cpp&&StdAfx.h&&Debug&&res
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 多种加密解密算法包括md2 md5 sha des 等多种加密解密的算法的源代码 并包含简单的使用测试程序
&[] - DES加密源码 可以加密解密文件 不妨试试看
&[] - DES加密解密,支持3重加密解密,下载就可以使用,封装好的类
&[] - 自己编写的用C语言简单的异或算法所编写的短小精悍的文件加密程序!实现了密码加密功能!已经运行通过。非常经典,绝对是学习C语言的算法的好例子。有小又精才是最好的!!
&[] - DES加密源码 可以加密解密文件 不妨试试看
&[] - 文件加密解密源代码
&[] - C语言游戏源码,文件加密解密, 人机猜数字,青蛙交换,大小写数字转换器,仿真计算器,推箱子游戏,俄罗斯方块游戏,贪吃蛇游戏,扫雷游戏
&[] - 文件加密解密程序,采用C语言实现,当输入文件名并回车就能加密你所指定的文件,解密反之同理.
&[] - 文件加密解密工具,采用des3加密,unix环境下编译使用,内含Makefile,需要修改编译器和目录
&[] - 一个使用des加密文件的实例
同时可以演示8个字符的加密解密过程技术小站:
厂商活动:
地点:苏州
时间:9月27日 14:00 - 17:00
地点:深圳
时间:9月22日 14:00 - 17:30
主办方:阿里云&庆科
时间: 9月19日
地点:广州
时间: 9月21日
零基础快速成为Android项目开发工程师
ARM裸机开发实战(第1期加强版)
张飞硬件设计与开发视频教程
从0到1自己动手写嵌入式操作系统
张飞电子视频全套共十部
移入鼠标可放大二维码
DES、AES、TEA加密算法的比较
来源:本站整理
作者:叶子日 10:48
[导读] DES 算法具有对称性, 既可以用于加密又可以用于解密。对称性带来的一个很大的好处在于硬件实现, DES 的加密和解密可以用完全相同的硬件来实现。DES 算法的明文分组是64 位, 输出密文
1.DES算法介绍:
算法具有对称性,&既可以用于加密又可以用于解密。对称性带来的一个很大的好处在于硬件实现, DES&的加密和解密可以用完全相同的硬件来实现。DES&算法的明文分组是64&位,&输出密文也是64&位。所以密钥的有效位数是56&位,&加上校验位共64&位。总体流程如表1&所示:输入的64&位明文,&先经初始IP&变换,&形成64&位数据,64&位数据被分为两部分,&分别是L&部分和R&部分; L&和R&经过16&次迭代,&形成新的64&位;&新的64&位数据再经初始逆变换,&输出64&位密文。初始置换和逆初始置换是简单的移位操作。在迭代过程这一步骤,&替代是在密钥控制下进行的,&而移位是按固定顺序进行的,&它将数据分组作为一个单元来进行变换,&相继使用替代法和移位法加密,从而具有增多替代和重新排列的功能。迭代过程是DES&加密算法的核心部分。
2.AES算法Rijndael介绍:
Rijndael&密码是一个迭代型分组密码,&其分组长度和密码长度都是可变的,分组长度和密码长度可以独立的指定为128&比特,192&比特或者256&比特。AES&的加密算法的数据处理单位是字节,128&位的比特信息被分成16&个字节,&按顺序复制到一个4&4&的矩阵中,&称为状态(state),AES&的所有变换都是基于状态矩阵的变换。用Nr&表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2&所示)&。在轮函数的每一轮迭代中,&包括4&步变换,&分别是字节代换运算(ByteSub())、行变换(ShiftRows())、列混合(MixColumns())以及轮密钥的添加变换(AddRoundKey()),&其作用就是通过重复简单的非线形变换、混合函数变换,&将字节代换运算产生的非线性扩散,&达到充分的混合,&在每轮迭代中引入不同的密钥,&从而实现加密的有效性
3.DES与AES算法比较:
自DES算法1977年首次公诸于世以来,学术界对其进行了深入的研究,围绕它的安全性等方面展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:
( 1)&作为分组密码,DES的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
( 2) DES的密钥的位数太短,只有56比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,&在现有技术下用穷举法寻找密钥已趋于可行。
(3) DES不能对抗差分和线性密码分析。迄今为止, DES算法中的S盒8个选择函数矩阵的设计原理因美国政府方面的干预,&不予公布。从这一方面严格地讲DES算法并不是一个真正的公开加密算法。。
( 4) DES用户实际使用的密钥长度为56bit,&理论上最大加密强度为256。DES算法要提高加密强度(例如增加密钥长度),&则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面无法提高DES算法的加密强度。
相对DES算法来说,AES算法无疑解决了上述问题,主要表现在如下几方面:
( 1)&运算速度快,在有反馈模式、无反馈模式的软硬件中,Rijndael都表现出非常好的性能。
( 2)&对内存的需求非常低,适合于受限环境。
( 3) Rijndael是一个分组迭代密码,分组长度和密钥长度设计灵活。
( 4) AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。
( 5) AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,&所以用穷举法是不可能破解的。在可预计的将来,如果计算机的运行速度没有根本性的提高,用穷举法破解AES密钥几乎不可能。
( 6) AES算法的设计策略是宽轨迹策略(Wide Trail Strategy, WTS)。WTS是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析。总之,Rijndael算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较DES更好的算法。
(Tiny Encryption Algorithm)&是一种简单高效的加密算法,以加密解密速度快,实现简单著称。算法真的很简单,TEA算法每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。目前我只知道QQ一直用的是16轮TEA。没什么好说的,先给出C语言的源代码(默认是32轮):
&1&void&encrypt(unsigned&long&*v,&unsigned&long&*k)&{
&2&&&&&unsigned&long&y=v[0],&z=v[1],&sum=0,&i;&&&&&&&&&/*&set&up&*/
&3&&&&&unsigned&long&delta=0x9e3779b9;&&&&&&&&&&&&&&&&&/*&a&key&schedule&constant&*/
&4&&&&&unsigned&long&a=k[0],&b=k[1],&c=k[2],&d=k[3];&&&/*&cache&key&*/
&5&&&&&for&(i=0;&i&&&32;&i++)&{&&&&&&&&&&&&&&&&&&&&&&&&/*&basic&cycle&start&*/
&6&&&&&&&&&sum&+=&
&7&&&&&&&&&y&+=&((z&&4)&+&a)&^&(z&+&sum)&^&((z&&5)&+&b);
&8&&&&&&&&&z&+=&((y&&4)&+&c)&^&(y&+&sum)&^&((y&&5)&+&d);/*&end&cycle&*/
10&&&&&v[0]=y;
11&&&&&v[1]=z;
14&void&decrypt(unsigned&long&*v,&unsigned&long&*k)&{
15&&&&&unsigned&long&y=v[0],&z=v[1],&sum=0xC6EF3720,&i;&/*&set&up&*/
16&&&&&unsigned&long&delta=0x9e3779b9;&&&&&&&&&&&&&&&&&&/*&a&key&schedule&constant&*/
17&&&&&unsigned&long&a=k[0],&b=k[1],&c=k[2],&d=k[3];&&&&/*&cache&key&*/
18&&&&&for(i=0;&i&32;&i++)&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&basic&cycle&start&*/
19&&&&&&&&&z&-=&((y&&4)&+&c)&^&(y&+&sum)&^&((y&&5)&+&d);
20&&&&&&&&&y&-=&((z&&4)&+&a)&^&(z&+&sum)&^&((z&&5)&+&b);
21&&&&&&&&&sum&-=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&end&cycle&*/
23&&&&&v[0]=y;
24&&&&&v[1]=z;
加密算法相关文章
加密算法相关下载
TEA相关文章
TEA相关下载
DES相关文章
DES相关下载
AES相关文章
AES相关下载
技术交流、积极发言! 发表评请遵守相关规定。
英特尔高级院士Mark Bohr: 但是最近,也许是因为制程进一步的微缩越来越难,一些公司背离了摩尔定律的法则。即使晶体管密度增加很少,或者根本没有增...
9月13日,英飞凌科技股份公司与金邦达签署了战略合作协议,双方达成共识,英飞凌通过分享德国工业4.0的经验与知识,协助金邦达从架构上改进现有多系...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题。
可以直接调用里面的加密和解密的方法。
using System.Collections.G
using System.L
using System.W
using System.T
using System.Security.C
using System.IO;
namespace EallNum.Helper
public class FI_DesTools
private FI_DesTools()
private static string key = "&&&&&";
/// &summary&
/// 对称加密解密的密钥
/// &/summary&
public static string Key
/// &summary&
/// DES加密
/// &/summary&
/// &param name="encryptString"&&/param&
/// &returns&&/returns&
public static string DesEncrypt(string strEncryptString)
StringBuilder strRetValue = new StringBuilder();
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] keyIV = keyB
byte[] inputByteArray = Encoding.UTF8.GetBytes(strEncryptString);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法
provider.Padding = PaddingMode.Z//自动补0
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
//不使用base64编码
//return Convert.ToBase64String(mStream.ToArray());
//组织成16进制字符串
foreach (byte b in mStream.ToArray())
strRetValue.AppendFormat("{0:X2}", b);
catch (Exception e)
Console.WriteLine(e);
return strRetValue.ToString();
/// &summary&
/// DES解密
/// &/summary&
/// &param name="decryptString"&&/param&
/// &returns&&/returns&
public static string DesDecrypt(string strDecryptString)
string strRetValue = "";
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] keyIV = keyB
//不使用base64解码
//byte[] inputByteArray = Convert.FromBase64String(decryptString);
//16进制转换为byte字节
byte[] inputByteArray = new byte[strDecryptString.Length / 2];
for (int x = 0; x & strDecryptString.Length / 2; x++)
int i = (Convert.ToInt32(strDecryptString.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法
provider.Padding = PaddingMode.Z//自动补0
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
//需要去掉结尾的null字符
//strRetValue = Encoding.UTF8.GetString(mStream.ToArray());
strRetValue = Encoding.UTF8.GetString(mStream.ToArray()).TrimEnd('\0');
catch (Exception e)
Console.WriteLine(e);
return strRetV
阅读(...) 评论()

我要回帖

更多关于 avr单片机接收字符串 的文章

 

随机推荐