init: v1.0.0

This commit is contained in:
yaole
2026-05-27 23:03:00 +08:00
commit 8d97f750eb
466 changed files with 80067 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
package experiment
import (
"encoding/binary"
)
var aesA = [][]byte{
{1, 0, 0, 0, 1, 1, 1, 1},
{1, 1, 0, 0, 0, 1, 1, 1},
{1, 1, 1, 0, 0, 0, 1, 1},
{1, 1, 1, 1, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 0, 0, 0},
{0, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 1, 1, 1, 1, 1},
}
var aesC = &ffe{
v: [8]byte{1, 1, 0, 0, 0, 1, 1, 0},
}
func aesSBox(in byte) byte {
r := NewFFE(in)
r = aesField.Invert(r)
r = Transform(aesA, r)
r = aesField.Add(r, aesC)
return r.Byte()
}
func toBytes(x []uint32) []byte {
data := make([]byte, 16)
binary.LittleEndian.PutUint32(data[0:], x[0])
binary.LittleEndian.PutUint32(data[4:], x[1])
binary.LittleEndian.PutUint32(data[8:], x[2])
binary.LittleEndian.PutUint32(data[12:], x[3])
return data
}
func toUints(b []byte) []uint32 {
r := make([]uint32, 4)
r[0] = binary.LittleEndian.Uint32(b[0:])
r[1] = binary.LittleEndian.Uint32(b[4:])
r[2] = binary.LittleEndian.Uint32(b[8:])
r[3] = binary.LittleEndian.Uint32(b[12:])
return r
}
// 模拟aesni指令
// 注意aes是列优先的。
func aesni(a, key []uint32) []uint32 {
aBuf := toBytes(a)
kBuf := toBytes(key)
AesLastRound(aBuf, kBuf)
return toUints(aBuf)
}