Git Product home page Git Product logo

crypt-demo's Introduction

crypt-demo

测试结果均base64编码。

AES

AES-ECB

测试1:

加密密钥:"1234567812345678"
加密向量:
加密填充算法:Pkcs7
加密分组模式:ECB
加密密文:123456
加密结果:mdSm0RmB+xAKrTah3DG31A==
备注:ECB模式下加密向量iv没有用到。

测试2:

加密密钥:"pwd"
加密向量:
加密填充算法:Pkcs7
加密分组模式:ECB
加密密文:123456
加密结果:3+WQyhMavuxzPzy40PZhJg==
备注:ECB模式下加密向量iv没有用到。

这时候由于加密块大小是16bytes,但加密密钥只有3bytes,需要补位:

  • php

使用 "\0" 或者 chr(0) 填充。不能使用单引号,否则长度不为16(可以使用strlen可以测试长度)。示例:

$key = "pwd\0\0\0\0\0\0\0\0\0\0\0\0\0";
$key = "pwd" . str_repeat(chr(0), 13);
  • js 使用 "\0" 或者 String.fromCharCode(0)填充。不区分单引号。示例:
function str_repeat(target, n) {return (new Array(n + 1)).join(target);}

var key  = "pwd\0\0\0\0\0\0\0\0\0\0\0\0\0";
var key  = "pwd" + str_repeat(String.fromCharCode(0), 13);
var key  = "pwd" + str_repeat(String.fromCharCode(0), 13);
  • python 使用 "\0" 或者 chr(0) 填充,不区分单引号。示例:
key = "pwd\0\0\0\0\0\0\0\0\0\0\0\0\0"
key = "pwd" + "\0"*13
key = "pwd" + chr(0)*13

AES-CBC

测试1:

加密密钥:"1234567812345678"
加密向量:"1234567812345678"
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:2eDiseYiSX62qk/WS/ZDmg==

测试2:

加密密钥:"pwd"
加密向量:"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:3+WQyhMavuxzPzy40PZhJg==

结果和AES-ECB相同。

这时候由于加密块大小是16bytes,但加密密钥和加密向量都只有3bytes,需要补位。这里默认补"\0"到16字节。

DES

DES-ECB

测试1:

加密密钥:"12345678"
加密向量:
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:ED5wLgc3Mnw=

测试2:

加密密钥:"pwd"
加密向量:
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:pQSWMWLBGQg=

DES-CBC

测试1:

加密密钥:"12345678"
加密向量:"12345678"
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:HUX+7VtHgb0=

测试2:

加密密钥:"pwd"
加密向量:"\0\0\0\0\0\0\0\0"
加密填充算法:Pkcs7
加密分组模式:CBC
加密密文:123456
加密结果:pQSWMWLBGQg=

crypt-demo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.