~/bend-docscommunity

libs/AES256SBox.bend source

libs/AES256SBox.bend on the hub · documented module

import Base# The AES byte substitution table, generated from the field inverse and affine map.# A byte selects one literal branch so formal NIST checkpoints avoid expanding# the exponentiation network for every substituted byte.def lookup_index(index: Nat) -> U32:    match index:        case 0n: 99        case 1n: 124        case 2n: 119        case 3n: 123        case 4n: 242        case 5n: 107        case 6n: 111        case 7n: 197        case 8n: 48        case 9n: 1        case 10n: 103        case 11n: 43        case 12n: 254        case 13n: 215        case 14n: 171        case 15n: 118        case 16n: 202        case 17n: 130        case 18n: 201        case 19n: 125        case 20n: 250        case 21n: 89        case 22n: 71        case 23n: 240        case 24n: 173        case 25n: 212        case 26n: 162        case 27n: 175        case 28n: 156        case 29n: 164        case 30n: 114        case 31n: 192        case 32n: 183        case 33n: 253        case 34n: 147        case 35n: 38        case 36n: 54        case 37n: 63        case 38n: 247        case 39n: 204        case 40n: 52        case 41n: 165        case 42n: 229        case 43n: 241        case 44n: 113        case 45n: 216        case 46n: 49        case 47n: 21        case 48n: 4        case 49n: 199        case 50n: 35        case 51n: 195        case 52n: 24        case 53n: 150        case 54n: 5        case 55n: 154        case 56n: 7        case 57n: 18        case 58n: 128        case 59n: 226        case 60n: 235        case 61n: 39        case 62n: 178        case 63n: 117        case 64n: 9        case 65n: 131        case 66n: 44        case 67n: 26        case 68n: 27        case 69n: 110        case 70n: 90        case 71n: 160        case 72n: 82        case 73n: 59        case 74n: 214        case 75n: 179        case 76n: 41        case 77n: 227        case 78n: 47        case 79n: 132        case 80n: 83        case 81n: 209        case 82n: 0        case 83n: 237        case 84n: 32        case 85n: 252        case 86n: 177        case 87n: 91        case 88n: 106        case 89n: 203        case 90n: 190        case 91n: 57        case 92n: 74        case 93n: 76        case 94n: 88        case 95n: 207        case 96n: 208        case 97n: 239        case 98n: 170        case 99n: 251        case 100n: 67        case 101n: 77        case 102n: 51        case 103n: 133        case 104n: 69        case 105n: 249        case 106n: 2        case 107n: 127        case 108n: 80        case 109n: 60        case 110n: 159        case 111n: 168        case 112n: 81        case 113n: 163        case 114n: 64        case 115n: 143        case 116n: 146        case 117n: 157        case 118n: 56        case 119n: 245        case 120n: 188        case 121n: 182        case 122n: 218        case 123n: 33        case 124n: 16        case 125n: 255        case 126n: 243        case 127n: 210        case 128n: 205        case 129n: 12        case 130n: 19        case 131n: 236        case 132n: 95        case 133n: 151        case 134n: 68        case 135n: 23        case 136n: 196        case 137n: 167        case 138n: 126        case 139n: 61        case 140n: 100        case 141n: 93        case 142n: 25        case 143n: 115        case 144n: 96        case 145n: 129        case 146n: 79        case 147n: 220        case 148n: 34        case 149n: 42        case 150n: 144        case 151n: 136        case 152n: 70        case 153n: 238        case 154n: 184        case 155n: 20        case 156n: 222        case 157n: 94        case 158n: 11        case 159n: 219        case 160n: 224        case 161n: 50        case 162n: 58        case 163n: 10        case 164n: 73        case 165n: 6        case 166n: 36        case 167n: 92        case 168n: 194        case 169n: 211        case 170n: 172        case 171n: 98        case 172n: 145        case 173n: 149        case 174n: 228        case 175n: 121        case 176n: 231        case 177n: 200        case 178n: 55        case 179n: 109        case 180n: 141        case 181n: 213        case 182n: 78        case 183n: 169        case 184n: 108        case 185n: 86        case 186n: 244        case 187n: 234        case 188n: 101        case 189n: 122        case 190n: 174        case 191n: 8        case 192n: 186        case 193n: 120        case 194n: 37        case 195n: 46        case 196n: 28        case 197n: 166        case 198n: 180        case 199n: 198        case 200n: 232        case 201n: 221        case 202n: 116        case 203n: 31        case 204n: 75        case 205n: 189        case 206n: 139        case 207n: 138        case 208n: 112        case 209n: 62        case 210n: 181        case 211n: 102        case 212n: 72        case 213n: 3        case 214n: 246        case 215n: 14        case 216n: 97        case 217n: 53        case 218n: 87        case 219n: 185        case 220n: 134        case 221n: 193        case 222n: 29        case 223n: 158        case 224n: 225        case 225n: 248        case 226n: 152        case 227n: 17        case 228n: 105        case 229n: 217        case 230n: 142        case 231n: 148        case 232n: 155        case 233n: 30        case 234n: 135        case 235n: 233        case 236n: 206        case 237n: 85        case 238n: 40        case 239n: 223        case 240n: 140        case 241n: 161        case 242n: 137        case 243n: 13        case 244n: 191        case 245n: 230        case 246n: 66        case 247n: 104        case 248n: 65        case 249n: 153        case 250n: 45        case 251n: 15        case 252n: 176        case 253n: 84        case 254n: 187        case 255n: 22        case _: 0def lookup(value: U32) -> U32:    lookup_index(U32.to_nat(U32.and(255, value)))