热门问题
时间线
聊天
视角

Speck

来自维基百科,自由的百科全书

Speck
Remove ads

Speck是一類輕量級的分組密碼,最早由美國國家安全局(NSA)於2013年6月提出[2]。如今Speck碼較多應用於軟體實現,而其姊妹算法Simon英語Simon (cipher)則多用於硬體實現。

快速預覽 概述, 設計者 ...
Remove ads

編碼描述

Speck支持多種分組密文長度。單個分組總是包含兩個單字,每個單字可以由16位、24位、32位、48位或64位比特組成。相關密文由2、3或4個詞彙組成。編碼的循環函數包含兩次反轉計算:將右單字添加到左單字,異或密文與左單字;之後異或左單字與右單字。循環的次數取決於參數的選擇如下[2]

更多資訊 塊大小(bits), 秘鑰大小(bits) ...

密碼次序表與主塊密碼使用相同的循環函數。

Remove ads

參考代碼

以下是編碼算法實現的設計參考,使用C語言編寫,其具有128比特的分組大小與密文。

#include <stdint.h>

#define ROR(x, r) ((x >> r) | (x << (64 - r)))
#define ROL(x, r) ((x << r) | (x >> (64 - r)))
#define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x)
#define ROUNDS 32

void encrypt(uint64_t ct[2],
             uint64_t const pt[2],            
             uint64_t const K[2])
{
   uint64_t y = pt[0], x = pt[1], b = K[0], a = K[1];

   R(x, y, b);
   for (int i = 0; i < ROUNDS - 1; i++) {
      R(a, b, i);
      R(x, y, b);
   }

   ct[0] = y;
   ct[1] = x;
}
Remove ads

參考文獻

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads