密匙可以由用户输入,然后做hash运算。
通常 aes-256 是将用户输入的密匙用 sha256 计算出 256 位的哈希值当密匙。aes-128类似。

解决方案 »

  1.   

    aes128加密的话,密钥是16字节,我之前是采用算md5码的方式,由于16字节,采用了128位md5算法来算密钥,向量也可以用该方法生成
      

  2.   

    下面的代码中,加密需要初始化向量iv,密钥可以是自己随便设置的128位,甚至少于128位都可以,比如我这里的key,可以是“0123456789012345”,所以
    int aes_encrypt(char* in, char* key, char* out)//, int olen)可能会设置buf长度
    {
        if(!in || !key || !out) return 0;
        unsigned char iv[AES_BLOCK_SIZE];//加密的初始化向量
        for(int i=0; i<AES_BLOCK_SIZE; ++i)//iv一般设置为全0,可以设置其他,但是加密解密要一样就行
         iv[i]=0;
        AES_KEY aes;
        if(AES_set_encrypt_key((unsigned char*)key, 128, &aes) < 0)
        {
            return 0;
        }
        int len=strlen(in);
        AES_cbc_encrypt((unsigned char*)in, (unsigned char*)out, len, &aes, iv, AES_ENCRYPT);
        return 1;
    }