Ну, пока вы знаете, что запутывание не является безопасностью, есть несколько простых способов запутать.Вы не указываете, как хранятся ваши ключи, поэтому я предполагаю, что они хранятся в двоичном виде в файле.
Самое простое запутывание - xor
с некоторым значением - я буду использовать "DEADBEEF "только потому, что это звучит вкусно:
keyFile <- "c:/foo.bin"
obfuscatedKey <- readBin(keyFile, "raw", file.info(keyFile)$size)
key <- xor(obfuscatedKey , as.raw(c(0xde, 0xad, 0xbe, 0xef))) # xor with DEADBEEF
Поскольку xor
является симметричным, тот же код можно использовать для создания obfuscatedKey из исходного ключа.
Другой способзашифровать вектор.Используя генератор случайных чисел с «секретным» начальным числом (42), ключ запутывается:
# obfuscate
key <- 101:110
n <- length(key)
set.seed(42, "Mersenne-Twister") # To get the same permutation
perm <- sample.int(n)
obfuscatedKey <- key[perm]
# unobfuscate
orgKey <- integer(n)
set.seed(42, "Mersenne-Twister") # To get the same permutation
perm <- sample.int(n)
orgKey[perm] <- obfuscatedKey
identical(key, orgKey) # TRUE
... и вы, конечно, можете комбинировать оба метода ...