Điểm:0

Tôi có thể tìm các vectơ thử nghiệm cho ChaCha20 ở đâu (cố gắng hiểu ví dụ Wikipedia)?

lá cờ cn

Tôi đã chơi xung quanh với mật mã luồng được tìm thấy cái này Trang Wikipedia ChaCha20 (biến thể ChaCha). Điều tôi bị mất là làm thế nào để kiểm tra mã này. Không có trình kiểm tra nào ở bất kỳ đâu trên trang đó và tôi không thể tìm thấy bất kỳ trình kiểm tra nào. Tôi đã viết mã C sau:

#define ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
#define QR(a, b, c, d) ( \
    a += b, d ^= a, d = ROTL(d,16), \
    c += d, b ^= c, b = ROTL(b,12), \
    a += b, d ^= a, d = ROTL(d, 8), \
    c += d, b ^= c, b = ROTL(b, 7))
#define VÒNG 20

void chacha_block(uint32_t out[16], uint32_t const in[16])
{
int tôi;
uint32_t x[16];

cho (i = 0; i < 16; ++i)    
    x[i] = trong[i];
// 10 vòng à 2 vòng/vòng = 20 vòng
for (i = 0; i < VÒNG; i += 2) {
    // Vòng lẻ
    QR(x[0], x[4], x[ 8], x[12]); // cột 0
    QR(x[1], x[5], x[ 9], x[13]); // cột 1
    QR(x[2], x[6], x[10], x[14]); // cột 2
    QR(x[3], x[7], x[11], x[15]); // cột 3
    //Tròn chẵn
    QR(x[0], x[5], x[10], x[15]); // đường chéo 1 (đường chéo chính)
    QR(x[1], x[6], x[11], x[12]); // đường chéo 2
    QR(x[2], x[7], x[ 8], x[13]); // đường chéo 3
    QR(x[3], x[4], x[ 9], x[14]); // đường chéo 4
}
cho (i = 0; i < 16; ++i)
    ra[i] = x[i] + vào[i];
}
}

khoảng trống chính () {
    const char* hằng số = "mở rộng k 32 byte";
    uint32_t inwhole[16];
    inwhole[0] = ((uint32_t*)constant)[0];
    inwhole[1] = ((uint32_t*)constant)[1];
    inwhole[2] = ((uint32_t*)constant)[2];
    inwhole[3] = ((uint32_t*)constant)[3];

    toàn bộ [4] = 0;//khóa [0];
    toàn bộ [5] = 0;//khóa [1];
    toàn bộ [6] = 0;//khóa [2];
    toàn bộ [7] = 0;//khóa [3];
    toàn bộ [8] = 0;//khóa [4];
    toàn bộ [9] = 0;//khóa [5];
    toàn bộ [10] = 0;//khóa [6];
    toàn bộ [11] = 0;//khóa [7];

    //Bộ đếm không và nonce
    toàn bộ [12] = 0;
    toàn bộ [13] = 0;
    toàn bộ [14] = 0;
    toàn bộ [15] = 0;

    uint32_t out[16];
    chacha_block(ra, vào);
    printHex((char*)out2,16*4);
    // Điều này in ra:
 //76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586
}

Tôi không thể tìm thấy bất kỳ vectơ thử nghiệm nào để xác thực khối dòng khóa đầu tiên này. Ngoài ra, tôi thấy khó hiểu là khối dòng khóa tiếp theo được tạo ra bằng cách chuyển đầu ra trước đó trở lại chacha_block chức năng? Ngoài ra, phần mật mã này có được sử dụng để xor các khối dòng khóa với dữ liệu không (điều này không được đề cập rõ ràng trong bài viết)?

Điểm:2
lá cờ vu

Mật mã ChaCha20 đã được chỉ định bởi một RFC "thông tin" - RFC-8439 làm tài liệu tham khảo để sử dụng trong các thông số kỹ thuật giao thức Internet. Tài liệu chứa một số vectơ kiểm tra.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.