- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
! 可逆的なハッシュ値を得る
ハッシュ値を得るためにはdigest()関数でパラメタに'''algo="sha256"'''などのオプションを指定すれば、いろいろな値が得られる。
しかし、これらのハッシュ値は不可逆な性質を持つので、特にセキュリティを求めるためのハッシュ値でない限りは衝突さえなければよいという考えで、作られたのが'''hashids'''である。
元の値は整数(のベクトル)である。
> hid = hashids::hashids_settings(salt = "salt", min_digit = 8)
> x = c(1,3,5)
> hashids::encode(x, hid)
[1] "k4KixUn8"
16進値からも変換できる。ベクトル内に零が含まれるとエラーになるので、零を含む整数ベクトルは16進変換してから、'''hashids::encode_hex()'''すればよい。
> y = c(1,3,5,0) #零がはいったベクトルはエラーに
零がはいったベクトルはエラーに
> y = c(1,3,5,0)
> hashids::encode(y, hid)
int[i] <- int[i]%%(ascii_val(substr(last, 1, 1)) + (i - 1)) でエラー:
replacement (置き換え) の長さが 0 です
バイナリからの変換の場合はencodeではなくencode_hex
> y %>% BMS::bin2hex() %>% hashids::encode_hex(hid)
[1] "MV8BokPp"
> y %>% BMS::bin2hex() %>% hashids::encode(hid) #バイナリからの変換の場合はencodeではなくencode_hex
> y %>% BMS::bin2hex() %>% hashids::encode(hid)
int%%1 でエラー: 二項演算子の引数が数値ではありません