我有一个字节数组填充十六进制数字和打印它简单的方法是非常没有意义的,因为有许多不可打印的元素.我需要的是以下形式的确切十六进制代码:3a5f771c
在哪种情况下哪一个更受青睐?
我想看看各种模式的评估crtieria列表,也许可以讨论每个标准的适用性.
例如,我认为其中一个标准是加密和解密的"代码大小",这对于微代码嵌入式系统(如802.11网络适配器)非常重要.如果实现CBC所需的代码远小于CTR所需的代码(我不知道这是真的,这只是一个例子),那么我就能理解为什么使用较小代码的模式会更受欢迎.但是,如果我正在编写一个在服务器上运行的应用程序,并且我使用的AES库无论如何都实现了CBC和CTR,那么这个标准就无关紧要了.
请参阅"每个标准的评估标准和适用性列表"的含义?
这与编程无关,但与算法有关.
我正在寻找一种方法来转换长字符串(从转储),它表示十六进制值到一个字节数组.
但为了保持原创,我会用自己的方式来表达它:假设我有一个"00A0BF"我想要解释为的字符串
byte[] {0x00,0xA0,0xBf}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我是Java新手,最后使用BigInteger并注意领先的十六进制零.但我觉得它很难看,我确信我错过了一些简单的东西.
这让我很难过 - 以下代码使用SpongyCastle的Android加密/解密 - 我正在尝试为iOS实现跨平台加密/解密.
下面的代码(来自Android)使用PKCS7Padding处理AES 128bit CBC,使用提供的salt和密码,salt存储在mysql数据库中,密码由最终用户提供,以下代码改编自此kelhoer回答.
我之所以使用AES128bit是因为AES256在iOS 4+中不可用,它是在iOS5 +中引入的,并且不得不使用脚趾openssl来生成派生密钥和初始化矢量(iv),因为学到苹果公司拒绝它是很冒险的与openssl库静态链接的应用程序.
由于该平台基于iOS 4.2+,因此使用捆绑和静态链接openssl库似乎过度杀死并且最好使用CommonCryptor库.
这是使用Spongycastle代码的Android版本:
private static void encrypt(InputStream fin,
OutputStream fout,
String password,
byte[] bSalt) {
try {
PKCS12ParametersGenerator pGen = new PKCS12ParametersGenerator(
new SHA256Digest()
);
char[] passwordChars = password.toCharArray();
final byte[] pkcs12PasswordBytes =
PBEParametersGenerator.PKCS12PasswordToBytes(passwordChars);
pGen.init(pkcs12PasswordBytes, bSalt, ITERATIONS);
CBCBlockCipher aesCBC = new CBCBlockCipher(new AESEngine());
ParametersWithIV aesCBCParams =
(ParametersWithIV) pGen.generateDerivedParameters(128, 128);
aesCBC.init(true, aesCBCParams);
PaddedBufferedBlockCipher aesCipher =
new PaddedBufferedBlockCipher(aesCBC, new PKCS7Padding());
aesCipher.init(true, aesCBCParams);
byte[] buf = …Run Code Online (Sandbox Code Playgroud) 我想开发一个用户数据非常敏感的应用程序。我是开发新手。所以不确定以下技术对于安全性或高效性是必要的。请留下您的评论。提前致谢。
为了额外的安全性,我们可以避开市场(游戏商店)并在个人设备上安装应用程序。它使它更安全吗?
我必须在设备上存储数据。我们如何确保数据安全,让其他应用程序无法读取?
android ×2
hex ×2
java ×2
aes ×1
byte ×1
bytearray ×1
commoncrypto ×1
dump ×1
encryption ×1
google-play ×1
ios ×1
security ×1
spongycastle ×1
storage ×1
store ×1