- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 RNCryptor 的 AES256 实现来使图像加密/解密工作图书馆。
这是我目前的代码:
//Encrypt file
/**
*
var encryptedData = RNCryptor.encrypt(data: data as Data, withPassword: hashKey.description)
try encryptedData.write(to: fileURL)
* */
fun encryptFile( inputFile : File ) : File {
val size = inputFile.length().toInt()
val fileBytes = ByteArray(size)
val aeS256JNCryptor = AES256JNCryptor()
val file = File(Environment.getExternalStorageDirectory().toString() + "/Encrypted_" + inputFile.name)
try {
val buf = BufferedInputStream(FileInputStream(inputFile))
buf.read(fileBytes, 0, fileBytes.size)
val encryptedFileBytes = aeS256JNCryptor.encryptData(fileBytes, "master".toCharArray())
val bufOut = BufferedOutputStream(FileOutputStream(file))
bufOut.write(encryptedFileBytes)
buf.close()
bufOut.close()
} catch (e: FileNotFoundException) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (e: IOException) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return file
}
//Decrypt file
/**
*
let encryptedData = fileManager.contents(atPath: filePathNormal)
let decryptedData = try RNCryptor.decrypt(data: encryptedData!, withPassword: hashKey.description)
let selected_image = UIImage.sd_image(with: decryptedData)
* */
fun decryptFile( inputFile : File ) : File {
val size = inputFile.length().toInt()
val fileBytes = ByteArray(size)
val aeS256JNCryptor = AES256JNCryptor()
val file = File(Environment.getExternalStorageDirectory().toString() + "/Decrypted_" + inputFile.name)
try {
val buf = BufferedInputStream(FileInputStream(inputFile))
buf.read(fileBytes, 0, fileBytes.size)
val decryptedFileBytes = aeS256JNCryptor.decryptData(fileBytes, "master".toCharArray())
val bufOut = BufferedOutputStream(file.outputStream())
bufOut.write(decryptedFileBytes)
buf.close()
bufOut.close()
} catch (e: FileNotFoundException) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (e: IOException) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return file
}
解密后我无法加载/查看图像。我已经发布了评论中使用的相关 iOS 代码。如果我在某个地方出错了,请告诉我。
以下是我已经尝试过但没有成功的方法:
fun decryptFile( inputFile : File ) : File {
val size = inputFile.length().toInt()
val fileBytes = ByteArray(size)
val aeS256JNCryptor = AES256JNCryptor()
val file = File(Environment.getExternalStorageDirectory().toString() + "/Decrypted_" + inputFile.name)
try {
val buf = BufferedInputStream(FileInputStream(inputFile))
buf.read(fileBytes, 0, fileBytes.size)
val decryptedFileBytes = aeS256JNCryptor.decryptData(fileBytes, "master".toCharArray())
if( file.exists() ) file.delete()
//val bufOut = BufferedOutputStream(file.outputStream())
//bufOut.write(decryptedFileBytes)
val fileOutputStream = FileOutputStream( file.absolutePath )
fileOutputStream.write(decryptedFileBytes)
buf.close()
fileOutputStream.close()
//bufOut.close()
} catch (e: FileNotFoundException) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (e: IOException) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return file
}
另一种保存位图的方法:
val fileOutputStream = FileOutputStream( file.absolutePath )
//fileOutputStream.write(decryptedFileBytes)
val bitmap = BitmapFactory.decodeByteArray(decryptedFileBytes, 0, decryptedFileBytes.size)
if( bitmap != null )
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream)
buf.close()
fileOutputStream.close()
我可以看到解密后的文件,大小和原文件一致,尝试调试字节数组转换,确保字节与原文件一致。
在 ImageView 中加载文件时,我无法在图库/应用程序中打开文件。
最佳答案
通过更改密码的加密和使用方式解决了。
这是有效的:
//Encrypt file
/**
*
var encryptedData = RNCryptor.encrypt(data: data as Data, withPassword: hashKey.description)
try encryptedData.write(to: fileURL)
fileBytes - 3,1,-54,106
encrypted - 3,1,71,68
* */
fun encryptFile( inputFile : File, privateKey : CharArray ) : File {
val size = inputFile.length().toInt()
val fileBytes = ByteArray(size)
val aeS256JNCryptor = AES256JNCryptor()
val file = File(Environment.getExternalStorageDirectory().toString() + "/Encrypted_" + inputFile.name)
try {
val buf = BufferedInputStream(FileInputStream(inputFile))
buf.read(fileBytes, 0, fileBytes.size)
val encryptedFileBytes = aeS256JNCryptor.encryptData(fileBytes, privateKey)
val bufOut = BufferedOutputStream(FileOutputStream(file))
bufOut.write(encryptedFileBytes)
buf.close()
bufOut.close()
} catch (e: FileNotFoundException) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (e: IOException) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return file
}
//Decrypt file
/**
*
let encryptedData = fileManager.contents(atPath: filePathNormal)
let decryptedData = try RNCryptor.decrypt(data: encryptedData!, withPassword: hashKey.description)
let selected_image = UIImage.sd_image(with: decryptedData)
encrypted - 3,1,71,68
decrypted Bytes - 3,1,-54,106
* */
fun decryptFile( inputFile : File, privateKey: CharArray ) : File {
val size = inputFile.length().toInt()
val fileBytes = ByteArray(size)
val aeS256JNCryptor = AES256JNCryptor()
val file = File(Environment.getExternalStorageDirectory().toString() + "/Decrypted_" + inputFile.name)
try {
val buf = BufferedInputStream(FileInputStream(inputFile))
buf.read(fileBytes, 0, fileBytes.size)
val decryptedFileBytes = aeS256JNCryptor.decryptData(fileBytes, privateKey)
if( file.exists() ) file.delete()
val fileOutputStream = FileOutputStream( file.absolutePath )
fileOutputStream.write(decryptedFileBytes)
buf.close()
fileOutputStream.close()
} catch (e: FileNotFoundException) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (e: IOException) {
// TODO Auto-generated catch block
e.printStackTrace()
}
return file
}
privateKey is a random alphanumeric string of length 16. Once generated, it needs to be reused while encrypting and decrypting file.
关于android - JNCryptor - RNCryptor 图像文件加密/解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419188/
我以下面的代码为例。如果我错了,请帮助我。 - (void)storeToKeychain { kPassword = [self computeSHA256DigestForString:[NSSt
我正在处理一个项目,我们需要加密一些用户凭据(用户名、密码、用户 ID 等)以传递到我们的服务器。我们决定使用 AES256 来实现这一点。在对这个主题进行一些研究时,很难避免注意到那里的一个项目,R
我有一些用 RNCryptor 加密的图像文件,我想解密它们并将它们用作 Framelayout 的背景。我浏览了样本文件,但我的应用程序在一段时间后关闭并且没有显示任何图像。我用 JNCryptor
我的应用中有很多短字符串需要解密,解密速度很关键。 目前我正在试验 RNCryptor 但发现它的默认设置对于我的用例来说有点慢。否则它是一个很棒的框架:-) 加密只会进行一次,因此其性能并不重要。
这是 Asynchronously decrypt a large file with RNCryptor on iOS 的后续行动 我已经成功地使用这篇文章中描述的方法异步解密了一个大型下载文件 (
我用过RNCryptor在 Objective-C 中成功,现在需要从 Javascript 加密我的 iOS 应用程序的数据。但是,这个简单的测试失败了...... function testE
我有一个 iOS7 应用程序,它使用 RNCryptor 来保持它的文档安全地隐藏起来。 问题是,由于该应用程序有点偏执,它非常自由地使用加密,这似乎导致偶尔的双重加密。 (出于复杂的原因,主要与背景
解密时出现错误:无法执行操作 RNCryptorError 1我不明白我做错了什么。这是我的代码块 最佳答案 对于可能在此处搜索的任何人:这是 RNCryptor#174 的副本,您可能也想在那里阅读
我正在使用最新的 RNCryptor 加密文件数据,然后将其保存到磁盘。当我尝试加密大文件(超过 150MB)时,我收到内存警告并且内存增加得非常快。 我尝试了以下解决方案,但没有一个对我有用: Me
我尝试将 RNCryptor 导入我的项目以加密一些字符串。但是我很难理解如何将其导入到我的 objective-c 项目中。我通过拖放到我的项目中复制了 RNCryptor/RNCryptor.sw
我在 iOS 中使用 RNCryptor 成功加密/解密数据。 我正在尝试获取要发送到服务器的公钥,以便它可以加密一些数据。 NSString *saltString = @"salt'n'peppa
我已经使用此代码通过 RNcryptor 成功加密了一个文本文件 NSFileManager *filemgr; NSData *databuffer; filemgr = [NSFileManage
iOS 开发新手,尝试编码数据以在 db 中安全存储数据。 我在这里找到了当前示例:https://github.com/RNCryptor/RNCryptor-objc 这是我的代码。 NSStri
我正在使用 RNCryptor 加密 iOS 上的 NSData 并将其发送到 Python 服务器。到目前为止,一切都是正确的。当我尝试在服务器端解密 NSData 时,我的问题就来了。 RNCry
这是我使用 RNCryptor 加密/解密我发送到 Web 服务的 JSON 字符串的方法。我正在使用静态 IV 变量,这可能是不好的做法,但请不要关注它。这是我的做法: 注意:我正在使用 Matt
我在我的应用程序中使用 RNCryptor。我使用密码为纯文本生成了加密字符串,当我尝试使用密码解密加密字符串时,它没有给我原始纯文本,而是给了我一些随机字符串。 我想我在字符串编码/解码中遗漏了一些
我正在尝试使用 RNCryptor 的 AES256 实现来使图像加密/解密工作图书馆。 这是我目前的代码: //Encrypt file /** * var encryptedData = RNC
我从 iOS 应用程序中调用的 PHP API 要求以某种自定义方式对有效负载进行加密。我在使用 RNCryptor 在 Objective-C 中复制这种方法时遇到了麻烦。 以下是用于加密字符串的
如何使用 RNCryptor (AES128CBC) 解密 NSData?我已经尝试理解文档:https://github.com/RNCryptor/RNCryptor-Spec/blob/mast
我想使用 AES256 对称加密我的 iPhone 应用程序和我的 Java 服务器套接字。我目前正在使用 Rob Napier 的 RNCryptor/JNCryptor 库。 iPhone 上的加
我是一名优秀的程序员,十分优秀!