go 的des加解密
go 的crypto/des里面只有cbc模式的
如果使用ecb模式的, 需要自己写。
代码如下
// PKCS5Padding func
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
//padtext := bytes.Repeat([]byte{0}, padding)
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
// PKCS5Unpadding func
func PKCS5Unpadding(origData []byte) []byte {
length := len(origData)
unpadding := int(origData[length-1])
return origData[:(length - unpadding)]
}
// desEncrypt func
func DESEncryptECB(key []byte, src []byte) []byte {
desBlockEncrypter, err := des.NewCipher(key[0:8])
if err != nil {
panic(err)
}
bs := desBlockEncrypter.BlockSize()
srcPadding := PKCS5Padding(src, bs)
out := make([]byte, len(srcPadding))
dst := out
for len(srcPadding) > 0 {
desBlockEncrypter.Encrypt(dst, srcPadding[:bs])
srcPadding = srcPadding[bs:]
dst = dst[bs:]
}
return out
}
// desDecrypt func
func DESDecryptECB(key []byte, src []byte) []byte {
desBlockDecrypter, err := des.NewCipher(key[0:8])
if err != nil {
panic(err)
}
bs := desBlockDecrypter.BlockSize()
out := make([]byte, len(src))
dst := out
for len(src) > 0 {
desBlockDecrypter.Decrypt(dst, src[:bs])
src = src[bs:]
dst = dst[bs:]
}
out = PKCS5Unpadding(out)
return out
}
ps: 逻辑流程绝无问题, 细节上还需要修改下, 原因是
加解密过程中, 可能由于数据是伪造的、导致计算过程中的slice越界。。
go 的des加解密相关推荐
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...
- 密码学入门1——凯撒密码和三重DES加解密
实验目的 1.完成第一个入门加解密--凯撒密码 2.完成当下较为流行的三重DES加解密技术 3.熟悉所学的实际运用方向 实验准备 硬件:计算机或笔记本电脑 操作系统:Mac操作系统 IDE环境:Ecl ...
- PHP 基础篇 - PHP 中 DES 加解密详解
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使 ...
- C语言实现DES加解密算法
C语言实现DES加解密算法 DES加解密 DES加解密 #include <stdio.h> #include <stdlib.h> #include <string.h ...
- js des加密 java_Java实现与JS相同的Des加解密算法完整实例
本文实例讲述了Java实现与JS相同的Des加解密算法.分享给大家供大家参考,具体如下: 这里演示java与js实现相同的des加解密算法,不多说,不废话,直接上代码 一.java实现 package ...
- LKT系列加密芯片DES加解密以及OpenSSL DES接口实现加解密
1.测试目标 使用已经预置DES密钥的LKT4201N系列加密芯片完成运算 2.测试环境 本示例运行环境为windows系统.测试软件LCS KIT.LKT-K100开发板. 3.测试步骤 注意:&q ...
- Hutool进行DES加解密
Hutool进行DES加解密 先简述以下:一个数据接口,接收到的是DES加密后的json字符串,需要先解密再转成bean对象. 我试了网上很多方式实现,发现每次加密后最后几位不同.想着对称加解密还能这 ...
- java 和 c# 下的RSA证书+AES+DES加解密实现
java 和 c# 下的RSA+AES+DES加解密实现 前言 在实际应用中,经常有需要使用加解密的情况,RSA\AES\DES是比较常用的几种加解密方式,使用和实现方式都比较成熟可靠,本文简要介绍一 ...
- DES加解密算法原理详解与实现
[DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...
- 【密码学】DES加解密原理及其Java实现算法
DES简介 DES(Data Encryption Standard)是对称加解密算法的一种,由IBM公司W.Tuchman和C.Meyer在上个世纪70年代开发. 该算法使用64位密钥(其中包含8位 ...
最新文章
- linux 检测添加磁盘空间,Linux构造磁盘空间满的测试环境
- 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵
- arduino怎么和C语言程序通信,c – 如何将arduino库与标准C代码一起使用
- 动态规划,java实现算法导论15章钢条切割
- Best Efforts 1PC 跨库事务
- Windows安装SSH
- 计算机学的是苹果系统,苹果电脑装windows7教程 苹果电脑装windows7方法
- laravel实战项目之管理员表设计
- 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
- 读书笔记:遇见未知的自己
- 手机home键、POWER 键分别是什么
- matlab2019b重装导致mjs安装失败问题解决
- 用树莓派连电脑显示屏
- 推广有哪些渠道?用好这4个引流渠道日引200
- 学生教育邮箱申请免费JetBrains套装正版授权
- Wifi密码破解与局域网抓包监听(小白--纯工具版)
- TensorFlow 中的 LRNOp
- Algorithm - Bubble Sort(Java)
- 服务器每秒钟执行命令数量是什么_日常学习笔记.md
- CSDN学霸课表——企业网络经典案例