Score:0

ฉันจะหาเวกเตอร์ทดสอบสำหรับ ChaCha20 ได้ที่ไหน (พยายามทำความเข้าใจตัวอย่าง Wikipedia)

ธง cn

ฉันกำลังเล่นกับรหัสสตรีมที่ค้นพบ นี้ หน้า Wikipedia ChaCha20 (ตัวแปร ChaCha) สิ่งที่ฉันหลงทางคือวิธีทดสอบรหัสนี้ ไม่มีผู้ทดสอบที่ใดก็ได้ในหน้านั้นและฉันไม่พบเลย ฉันเขียนรหัส C ต่อไปนี้:

#กำหนด ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
#กำหนด QR(a, b, c, d) ( \
    a += b, d ^= a, d = ROTL(d,16), \
    ค += d, b ^= ค, ข = ROTL(b,12), \
    a += b, d ^= a, d = ROTL(ง, 8), \
    ค += ง, ข ^= ค, ข = ROTL(ข, 7))
#กำหนดรอบ 20

เป็นโมฆะ chacha_block (uint32_t ออก [16], uint32_t const ใน [16])
{
int ฉัน;
uint32_t x[16];

สำหรับ (i = 0; i < 16; ++i)    
    x[i] = ใน[i];
// 10 ลูป Ã 2 รอบ/ลูป = 20 รอบ
สำหรับ (i = 0; i < ROUNDS; i += 2) {
    //รอบคี่
    QR(x[0], x[4], x[ 8], x[12]); // คอลัมน์ 0
    QR(x[1], x[5], x[ 9], x[13]); // คอลัมน์ 1
    QR(x[2], x[6], x[10], x[14]); // คอลัมน์ 2
    QR(x[3], x[7], x[11], x[15]); // คอลัมน์ 3
    //ตัวกลมเลย
    QR(x[0], x[5], x[10], x[15]); // เส้นทแยงมุม 1 (เส้นทแยงมุมหลัก)
    QR(x[1], x[6], x[11], x[12]); // เส้นทแยงมุม 2
    QR(x[2], x[7], x[ 8], x[13]); // เส้นทแยงมุม 3
    QR(x[3], x[4], x[ 9], x[14]); // เส้นทแยงมุม 4
}
สำหรับ (i = 0; i < 16; ++i)
    ออก[i] = x[i] + ใน[i];
}
}

โมฆะ main(){
    ค่าคงที่ const char* = "ขยาย 32 ไบต์ k";
    uint32_t ในทั้งหมด [16];
    ทั้ง [0] = ((uint32_t*) ค่าคงที่) [0];
    ทั้ง [1] = ((uint32_t*) ค่าคงที่) [1];
    เต็ม [2] = ((uint32_t*) ค่าคงที่) [2];
    เต็ม [3] = ((uint32_t*) ค่าคงที่) [3];

    เต็ม[4] = 0;//คีย์[0];
    เต็ม [5] = 0; // คีย์ [1];
    เต็ม [6] = 0; // คีย์ [2];
    ในทั้งหมด [7] = 0; // คีย์ [3];
    เต็ม [8] = 0; // คีย์ [4];
    เต็ม [9] = 0; // คีย์ [5];
    ทั้ง [10] = 0; // คีย์ [6];
    เต็ม [11] = 0; // คีย์ [7];

    // ตัวนับศูนย์และ nonce
    ทั้ง [12] = 0;
    ทั้ง [13] = 0;
    ทั้ง [14] = 0;
    ทั้ง [15] = 0;

    uint32_t ออก [16];
    chacha_block(ออก, เข้าทั้งหมด);
    printHex((ถ่าน*)out2,16*4);
    // สิ่งนี้พิมพ์ออกมา:
 //76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586
}

ฉันไม่พบเวกเตอร์ทดสอบใด ๆ ที่จะตรวจสอบความถูกต้องของบล็อกสตรีมหลักแรกนี้ นอกจากนี้ ฉันยังพบความสับสนว่าบล็อกสตรีมคีย์ถัดไปหมายถึงการสร้างโดยส่งเอาต์พุตก่อนหน้ากลับไปที่ chacha_block การทำงาน? เนื้อรหัสนี้ใช้เพื่อ xor บล็อกคีย์สตรีมด้วยข้อมูลหรือไม่ (สิ่งนี้ไม่ได้กล่าวถึงอย่างชัดเจนในบทความ)

Score:2
ธง vu

รหัส ChaCha20 ได้รับการระบุโดย RFC "ที่ให้ข้อมูล" - RFC-8439 เพื่อเป็นข้อมูลอ้างอิงสำหรับใช้ในข้อกำหนดของอินเทอร์เน็ตโปรโตคอล เอกสารประกอบด้วยเวกเตอร์ทดสอบบางส่วน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา