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加解密相关推荐

  1. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...

  2. 密码学入门1——凯撒密码和三重DES加解密

    实验目的 1.完成第一个入门加解密--凯撒密码 2.完成当下较为流行的三重DES加解密技术 3.熟悉所学的实际运用方向 实验准备 硬件:计算机或笔记本电脑 操作系统:Mac操作系统 IDE环境:Ecl ...

  3. PHP 基础篇 - PHP 中 DES 加解密详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使 ...

  4. C语言实现DES加解密算法

    C语言实现DES加解密算法 DES加解密 DES加解密 #include <stdio.h> #include <stdlib.h> #include <string.h ...

  5. js des加密 java_Java实现与JS相同的Des加解密算法完整实例

    本文实例讲述了Java实现与JS相同的Des加解密算法.分享给大家供大家参考,具体如下: 这里演示java与js实现相同的des加解密算法,不多说,不废话,直接上代码 一.java实现 package ...

  6. LKT系列加密芯片DES加解密以及OpenSSL DES接口实现加解密

    1.测试目标 使用已经预置DES密钥的LKT4201N系列加密芯片完成运算 2.测试环境 本示例运行环境为windows系统.测试软件LCS KIT.LKT-K100开发板. 3.测试步骤 注意:&q ...

  7. Hutool进行DES加解密

    Hutool进行DES加解密 先简述以下:一个数据接口,接收到的是DES加密后的json字符串,需要先解密再转成bean对象. 我试了网上很多方式实现,发现每次加密后最后几位不同.想着对称加解密还能这 ...

  8. java 和 c# 下的RSA证书+AES+DES加解密实现

    java 和 c# 下的RSA+AES+DES加解密实现 前言 在实际应用中,经常有需要使用加解密的情况,RSA\AES\DES是比较常用的几种加解密方式,使用和实现方式都比较成熟可靠,本文简要介绍一 ...

  9. DES加解密算法原理详解与实现

    [DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...

  10. 【密码学】DES加解密原理及其Java实现算法

    DES简介 DES(Data Encryption Standard)是对称加解密算法的一种,由IBM公司W.Tuchman和C.Meyer在上个世纪70年代开发. 该算法使用64位密钥(其中包含8位 ...

最新文章

  1. linux 检测添加磁盘空间,Linux构造磁盘空间满的测试环境
  2. 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵
  3. arduino怎么和C语言程序通信,c – 如何将arduino库与标准C代码一起使用
  4. 动态规划,java实现算法导论15章钢条切割
  5. Best Efforts 1PC 跨库事务
  6. Windows安装SSH
  7. 计算机学的是苹果系统,苹果电脑装windows7教程 苹果电脑装windows7方法
  8. laravel实战项目之管理员表设计
  9. 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
  10. 读书笔记:遇见未知的自己
  11. 手机home键、POWER 键分别是什么
  12. matlab2019b重装导致mjs安装失败问题解决
  13. 用树莓派连电脑显示屏
  14. 推广有哪些渠道?用好这4个引流渠道日引200
  15. 学生教育邮箱申请免费JetBrains套装正版授权
  16. Wifi密码破解与局域网抓包监听(小白--纯工具版)
  17. TensorFlow 中的 LRNOp
  18. Algorithm - Bubble Sort(Java)
  19. 服务器每秒钟执行命令数量是什么_日常学习笔记.md
  20. CSDN学霸课表——企业网络经典案例

热门文章

  1. Java I/O系统学习系列一:File和RandomAccessFile
  2. git部署与基本命令汇总
  3. 深度学习 Deep Learning with MATLAB(懒人版)
  4. sift的java实现解述
  5. 谷歌chrome浏览器的源码分析(六)
  6. C安全编码--预处理
  7. 程序员面试题精选100题(60)-判断二叉树是不是平衡[数据结构]
  8. Coursera课程Python for everyone:chapter10
  9. 七步精通Python机器学习
  10. 易天光通信ETU 25G SFP28光模块规格参数