Вы можете сделать это с помощью функции reshape()
или с функциями melt()
/ cast()
в пакете reshape. Для второго варианта пример кода:
library(reshape)
cast(dat1, name ~ numbers)
Или с помощью reshape2
library(reshape2)
dcast(dat1, name ~ numbers)
Не все версии Java предоставляют SecretKeyFactory
для «AES» у своих поставщиков по умолчанию.
Если вы хотите сгенерировать новый ключ, выберите нужное количество бит (128, 192 или 256) из экземпляра SecureRandom
и использовать это случайное число для инициализации экземпляра SecretKeySpec
.
Если вы используете шифрование на основе пароля, создайте SecretKeyFactory
для алгоритма «PBKDF2WithHmacSHA1», и использовать его для инициализации экземпляра SecretKeySpec
как , показанного здесь.
Это проверенная ошибка Java. См. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7022467
EDIT: разные версии Java поддерживают разные алгоритмы, вы также можете расширить их с помощью пользовательских провайдеров и так далее. Oracle имеет список для java 6 здесь http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html . Для KeyFactory это DSA.
DES
).
– yegor256
6 December 2011 в 10:44
Вам действительно не нужно использовать SecretKeyFactory
. Вы можете создать ключ AES со следующим:
byte[] keyData = ........
SecretKeySpec key = new SecretKeySpec(keyData, "AES");
Если вы хотите сделать шифрование на основе пароля (PBE), просто выберите безопасный алгоритм хеширования, который даст вам хэш того же размера, что и требуемый ключ , Например, если вы хотите использовать 256-битный ключ для AES, вот способ построения ключа:
private Key buildKey(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest digester = MessageDigest.getInstance("SHA-256");
digester.update(password.getBytes("UTF-8"));
byte[] key = digester.digest();
SecretKeySpec spec = new SecretKeySpec(key, "AES");
return spec;
}
Редактировать: я бы рекомендовал не использовать MD5 и DES, если это не игровой проект, оба имеют недостатки и считаются устаревшими.
char
в пароле нуль самостоятельно, так как он не предоставляет алгоритм с таким поведением. – erickson 13 December 2013 в 21:11