豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 205 行 · 11774 字节 · UTF-8
§
「:
文言:流密码者,夏夏之二十轮也。以三二字为词,加法则化整而模二之三十二次幂,旋左以旋右代(旋左 n 即旋右 32 减 n),异或逐位而行。季轮旋量为一六、一二、八、七。
汉语:ChaCha20 块函数(RFC 7539 / RFC 8439 §2.3)。十六个三十二位词,以『0』『1』字符串表(首字为最高位),复用散列摘要之 整转字/字转整/字加/位异或/字旋右 及 列 诸辅助。季轮(quarter round)旋量为 16、12、8、7(RFC §2.1)。纯豫言,不假外库。
:」

寻观「标准库」之书。
寻观「标准库」之「数据结构」之「整数操作」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「终端浏览器」之「散列摘要」之书。


「:文言:取一字。汉语:字节串自零起第 pos 字节;越界则零。:」
「取一字」乃化「字节串」而化「整数」而「整数」也。
「取一字」者会「bs」而会「pos」而
    若「小于」于「pos」于(「字节串长度」于「bs」)
    则「字节串取字节」于「bs」于「pos」
    否则「零」
也。

「:文言:取四字。汉语:自字节串基址读四字(小端);越界补零。:」
「取四字」乃化「字节串」而化「整数」而「整数」也。
「取四字」者会「bs」而会「基」而
    虑「b0」者(「取一字」于「bs」于「基」)
    而
    虑「b1」者(「取一字」于「bs」于(「加」于「基」于「一」))
    而
    虑「b2」者(「取一字」于「bs」于(「加」于「基」于「二」))
    而
    虑「b3」者(「取一字」于「bs」于(「加」于「基」于「三」))
    而
    虑「n0」者(「加」于(「乘」于「b0」于「一」)于(「乘」于「b1」于「二五六」))
    而
    虑「n1」者(「加」于(「乘」于「b2」于「六五五三六」)于(「乘」于「b3」于「一六七七七二一六」))
    而「加」于「n0」于「n1」
也。

「:文言:置第。汉语:列自零起第 i 项换新值。:」
「置第」乃化(「列」于「字符串」)而化「整数」而化「字符串」而(「列」于「字符串」)也。
「置第」者会「列」而会「i」而会「新」而
    若「等零」于「i」
    则「缀」于「新」于(「尾列」于「列」)
    否则
        虑「首」者(「首列」于「列」)
        而
        虑「尾」者(「尾列」于「列」)
        而
        虑「余」者(「置第」于「尾」于(「减」于「i」于「一」)于「新」)
        而「缀」于「首」于「余」
    也。

「:文言:季轮。汉语:对四词(位置 i、j、k、l)行一季轮;旋量一六、一二、八、七。:」
「季轮」乃化(「列」于「字符串」)而化「整数」而化「整数」而化「整数」而化「整数」而(「列」于「字符串」)也。
「季轮」者会「st」而会「i」而会「j」而会「k」而会「l」而
    虑「a」者(「取第」于「st」于「i」)
    而
    虑「b」者(「取第」于「st」于「j」)
    而
    虑「c」者(「取第」于「st」于「k」)
    而
    虑「d」者(「取第」于「st」于「l」)
    而
    虑「a1」者(「字加」于「a」于「b」)
    而
    虑「d1」者(「字旋右」于(「位异或」于「d」于「a1」)于「一六」)
    而
    虑「c1」者(「字加」于「c」于「d1」)
    而
    虑「b1」者(「字旋右」于(「位异或」于「b」于「c1」)于「二零」)
    而
    虑「a2」者(「字加」于「a1」于「b1」)
    而
    虑「d2」者(「字旋右」于(「位异或」于「d1」于「a2」)于「二四」)
    而
    虑「c2」者(「字加」于「c1」于「d2」)
    而
    虑「b2」者(「字旋右」于(「位异或」于「b1」于「c2」)于「二五」)
    而
    虑「s1」者(「置第」于「st」于「i」于「a2」)
    而
    虑「s2」者(「置第」于「s1」于「j」于「b2」)
    而
    虑「s3」者(「置第」于「s2」于「k」于「c2」)
    而「置第」于「s3」于「l」于「d2」
也。

「:文言:双轮。汉语:一轮(四列轮)加一轮(四斜轮),共八季轮。:」
「双轮」乃化(「列」于「字符串」)而(「列」于「字符串」)也。
「双轮」者会「st」而
    虑「s1」者(「季轮」于「st」于「零」于「四」于「八」于「一二」)
    而
    虑「s2」者(「季轮」于「s1」于「一」于「五」于「九」于「一三」)
    而
    虑「s3」者(「季轮」于「s2」于「二」于「六」于「一零」于「一四」)
    而
    虑「s4」者(「季轮」于「s3」于「三」于「七」于「一一」于「一五」)
    而
    虑「s5」者(「季轮」于「s4」于「零」于「五」于「一零」于「一五」)
    而
    虑「s6」者(「季轮」于「s5」于「一」于「六」于「一一」于「一二」)
    而
    虑「s7」者(「季轮」于「s6」于「二」于「七」于「八」于「一三」)
    而「季轮」于「s7」于「三」于「四」于「九」于「一四」
也。

「:文言:轮累。汉语:自始态行 n 双轮(共 2n 轮)。:」
「轮累」乃化(「列」于「字符串」)而化「整数」而(「列」于「字符串」)也。
「轮累」者会「st」而会「n」而
    若「等零」于「n」则「st」
    否则「轮累」于(「双轮」于「st」)于(「减」于「n」于「一」)
也。

「:文言:加回累。汉语:逐词加原态,自 i 至一六。:」
「加回累」乃化(「列」于「字符串」)而化(「列」于「字符串」)而化「整数」而化(「列」于「字符串」)而(「列」于「字符串」)也。
「加回累」者会「cur」而会「orig」而会「i」而会「acc」而
    若「等」于「i」于「一六」则「acc」
    否则
        虑「ca」者(「取第」于「cur」于「i」)
        而
        虑「oa」者(「取第」于「orig」于「i」)
        而
        虑「新词」者(「字加」于「ca」于「oa」)
        而「加回累」于「cur」于「orig」于(「加」于「i」于「一」)于(「置第」于「acc」于「i」于「新词」)
    也。
「:文言:加回。汉语:工作态加原态(逐词模二之三十二次幂)。:」
「加回」乃化(「列」于「字符串」)而化(「列」于「字符串」)而(「列」于「字符串」)也。
「加回」者会「cur」而会「orig」而「加回累」于「cur」于「orig」于「零」于「orig」也。

「:文言:字转四字。汉语:词(三二字)转小端四字(字节串)。:」
「字转四字」乃化「字符串」而「字节串」也。
「字转四字」者会「w」而
    虑「n」者(「字转整」于「w」)
    而
    虑「b0」者(「减」于「n」于(「乘」于(「除以」于「n」于「二五六」)于「二五六」))
    而
    虑「m1」者(「除以」于「n」于「二五六」)
    而
    虑「b1」者(「减」于「m1」于(「乘」于(「除以」于「m1」于「二五六」)于「二五六」))
    而
    虑「m2」者(「除以」于「m1」于「二五六」)
    而
    虑「b2」者(「减」于「m2」于(「乘」于(「除以」于「m2」于「二五六」)于「二五六」))
    而
    虑「m3」者(「除以」于「m2」于「二五六」)
    而
    虑「b3」者(「减」于「m3」于(「乘」于(「除以」于「m3」于「二五六」)于「二五六」))
    而
    虑「p1」者(「拼接字节串」于(「单字节串」于「b0」)于(「单字节串」于「b1」))
    而
    虑「p2」者(「拼接字节串」于(「单字节串」于「b2」)于(「单字节串」于「b3」))
    而「拼接字节串」于「p1」于「p2」
也。

「:文言:输出累。汉语:逐词转四字,自 wi 至一六。:」
「输出累」乃化(「列」于「字符串」)而化「整数」而化「字节串」而「字节串」也。
「输出累」者会「st」而会「wi」而会「acc」而
    若「等」于「wi」于「一六」则「acc」
    否则「输出累」于「st」于(「加」于「wi」于「一」)于(「拼接字节串」于「acc」于(「字转四字」于(「取第」于「st」于「wi」)))
也。

「:文言:建态。汉语:由密钥、计数、非密成十六词态(常、密、计数、非密)。:」
「建态」乃化「字节串」而化「整数」而化「字节串」而(「列」于「字符串」)也。
「建态」者会「key」而会「counter」而会「nonce」而
    虑「L1」者(「加末」于「罄」于(「整转字」于「一六三四七六零八零五」))
    而
    虑「L2」者(「加末」于「L1」于(「整转字」于「八五七七六零八七八」))
    而
    虑「L3」者(「加末」于「L2」于(「整转字」于「二零三六四七七二三四」))
    而
    虑「L4」者(「加末」于「L3」于(「整转字」于「一七九七二八五二三六」))
    而
    虑「L5」者(「加末」于「L4」于(「整转字」于(「取四字」于「key」于「零」)))
    而
    虑「L6」者(「加末」于「L5」于(「整转字」于(「取四字」于「key」于「四」)))
    而
    虑「L7」者(「加末」于「L6」于(「整转字」于(「取四字」于「key」于「八」)))
    而
    虑「L8」者(「加末」于「L7」于(「整转字」于(「取四字」于「key」于「一二」)))
    而
    虑「L9」者(「加末」于「L8」于(「整转字」于(「取四字」于「key」于「一六」)))
    而
    虑「L10」者(「加末」于「L9」于(「整转字」于(「取四字」于「key」于「二零」)))
    而
    虑「L11」者(「加末」于「L10」于(「整转字」于(「取四字」于「key」于「二四」)))
    而
    虑「L12」者(「加末」于「L11」于(「整转字」于(「取四字」于「key」于「二八」)))
    而
    虑「L13」者(「加末」于「L12」于(「整转字」于「counter」))
    而
    虑「L14」者(「加末」于「L13」于(「整转字」于(「取四字」于「nonce」于「零」)))
    而
    虑「L15」者(「加末」于「L14」于(「整转字」于(「取四字」于「nonce」于「四」)))
    而「加末」于「L15」于(「整转字」于(「取四字」于「nonce」于「八」))
也。

「:文言:块。汉语:ChaCha20 块函数(密钥、计数、非密成六四字节)。:」
「块」乃化「字节串」而化「整数」而化「字节串」而「字节串」也。
「块」者会「key」而会「counter」而会「nonce」而
    虑「orig」者(「建态」于「key」于「counter」于「nonce」)
    而
    虑「work」者(「轮累」于「orig」于「一零」)
    而
    虑「fin」者(「加回」于「work」于「orig」)
    而「输出累」于「fin」于「零」于(「空字节串」于「元」)
也。