zoukankan      html  css  js  c++  java
  • AES分组加密简介

    AES分组加密简介

    1、首先应该明白AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度。

    2、分组加密的几种方式

    ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

    CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。

    CFB/OFB实际上是一种反馈模式,目的也是增强破解的难度。

    ECBCBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量。

    3、两个api

    void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,    const AES_KEY *key, const int enc);

    AES加密/解密单个数据块,ECB模式

    in: 需要加密/解密的数据;

    out: 计算后输出的数据;

    key:密钥

    enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;

    void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,   size_t length, const AES_KEY *key,    unsigned char *ivec, const int enc);

    AES加密/解密单个数据块,CBC模式

    in: 需要加密/解密的数据;

    out: 计算后输出的数据;

    length: 数据长度

    key:密钥

    ivec: 初始向量

    enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;

    原文

    http://bbs.csdn.net/topics/330033279

    OpenSSL 之 Command & API

    http://hi.baidu.com/orxor/item/e0b4bc69774a4b0da0cf0f2b

    http://bbs.csdn.net/topics/390448993

    Openssl AES 总结函数的参数含义

    http://blog.csdn.net/sunspider107/article/details/7375816

    https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

  • 相关阅读:
    加法原理和乘法原理
    布尔矩阵
    Codeforces Round #603 (Div. 2) A. Sweet Problem
    Codeforces Round #603 (Div. 2) D. Secret Passwords 并查集
    poj1611The Suspects并查集
    poj 2236 Wireless Network 并查集
    求斐波那契数的python语言实现---递归和迭代
    python语言实现阶乘的两种方法---递归和迭代
    栈实现二进制转十进制
    栈的基本操作
  • 原文地址:https://www.cnblogs.com/mydomain/p/3109590.html
Copyright © 2011-2022 走看看