首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CTR模式加密的伪码

CTR模式加密的伪码
EN

Cryptography用户
提问于 2016-11-29 02:38:27
回答 2查看 3.4K关注 0票数 1

我正在跟踪一个关于CTR加密模式的文档这里。我有一些观点还没有得到澄清。在第一部分回顾反模式加密。操作。

要使用ctr模式加密,首先使用明文M(任意位字符串)、密钥K和计数器ctr,其中ctr是n位字符串。设C是M的异或(Excusive),以及pad EK(ctr) x- EK(ctr+1) -EK(ctr+2)的第一位。密文是( ctr,C),或者更广泛地说,是C,以及足以恢复ctr的东西。为了解密密文(ctr;C),计算明文M作为C的异或,以及pad EK(ctr)的第一个\ctr(Ctr_R)_x_x(ctr+1)_x_(EK)_x(ctr+2).因此,解密与M和C的加密是一样的

如我所想,伪代码将是:

代码语言:javascript
复制
selectFirst(pad, plainText M){
    int n = length(M);
    return n first element of pad
    return firstElements(pad, n);
}

void ctr(){
    string M;
    key[16] K;
    n-bit-string ctr;
    pad = EK(ctr) || EK(ctr+1) || EK(ctr+2)...
    firstM = selectFirst(pad, M);
    C = xor(M, firstM);
}

EK (x)用密钥K加密x(使用一些算法,例如AES),但我不明白:

  1. 什么是ctr + 1,ctr+2.
  2. .=‘ctr+2 1’>.‘>.“或”行动?其结果是什么?
  3. CTR模式是否一次执行而不使用循环?
EN

回答 2

Cryptography用户

发布于 2016-11-29 03:05:26

什么是ctr + 1,ctr+2.

ctr是块密码处理的第一个128位输入值,ctr+1是这个数字递增1,依此类推。在实际操作中,ctr通常是96位nonce和32位递增计数器的组合.

.=‘ctr+2 1’>.‘>.“或”行动?其结果是什么?

不,在本例中,\x指的是级联。

CTR模式是否一次执行而不使用循环?

不,CTR模式实现几乎总是使用循环,并以块大小的倍数进行处理。

票数 3
EN

Cryptography用户

发布于 2016-11-30 12:33:55

我认为在计数器模式下的n块密码的伪码可能如下所示:

代码语言:javascript
复制
#check if plaintext is multiple of the blocklength, if not pad

padding(plaintext M, blocklength n){
    if (M % n != 0) {
        pad(M)
    }
}


#run encryption on padded plaintext

ctr (Key K, Counter ctr, Paddedplaintext M){
    # number of plaintext blocks to encrypt
    number_of_blocks = M / n

    for i in number_of_blocks {
        #read n bits from padded plaintext
        block_i = M.read(n)

        #encrypt counter value with key K and XOR with n-bits of plaintext
        C_i = block_i XOR Encrypt(ctr, K)

        #update counter value
        ctr = ctr + 1
    }
}
票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/41891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档