我的应用程序使用sha256加密(实际上它是一个哈希函数,所以你无法解密它)。对于对服务器的每个请求,我需要创建这样一个字符串“param1|param2|param3”并用 sha256 对其进行加密(我将得到 encryptedString
),并且我需要添加第四个参数 "hash" = encryptedString
。这是应用程序中加密的唯一用途
sha256函数是:
import Security
func encryption_sha256(_ originString: String) -> String {
let data = originString.data(using: String.Encoding.utf8)!
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
CC_SHA256((data as NSData).bytes, CC_LONG(data.count), &hash)
let hexBytes = hash.map { String(format: "%02hhx", $0) }
let resultString = hexBytes.joined(separator: "")
return resultString
}
当我提交到 App Store 时,我有这样的问题:
1) 您的应用程序是否设计为使用加密技术,或者是否包含或合并加密技术? (即使您的应用仅使用 iOS 或 macOS 中提供的加密,也请选择"is"。)*
据我了解,我的答案是是。 或者我可以回答“否”吗,因为 sha256 不是加密,它只是哈希,你无法解密它?
2) 您的应用是否满足以下任一条件: (a) 符合第 5 类第 2 部分规定的一项或多项豁免资格 (b) 加密的使用仅限于操作系统(iOS 或 macOS)内的加密 (c) 仅通过 HTTPS 进行调用 (d) 应用程序仅在美国和/或加拿大提供
确保您的应用符合此处列出的豁免标准。您有责任对您的产品进行正确分类。对您的应用程序进行错误分类可能会导致您违反美国导出法,并可能使您受到处罚,包括从应用程序商店中删除您的应用程序。在回答问题之前,请仔细阅读常见问题解答。
如果您的应用的加密是: (a) 仅限于在操作系统(iOS 或 macOS)内使用加密 (b) 仅限通过 HTTPS 进行调用 (c) 专为医疗最终用途而设计 (d) 仅限于知识产权和版权保护 (e) 仅限于身份验证、数字签名或数据或文件的解密 (f) 专门设计并仅限于银行用途或“货币交易”;或者 (g) 仅限于“固定”数据压缩或编码技术 如果您的应用符合《美国导出管理条例》第 2 部分第 5 类注释 4 中提供的描述,您也可以选择"is"。
我在这里回答是,一切都很简单,我只需要插入 <key>ITSAppUsesNonExemptEncryption</key><false/>
在 info.plist
文件。
我可以对这个问题回答"is"吗?
如果“否”,我会收到 3d 问题:
3) 您的应用是否实现了任何专有的或尚未被国际标准机构(IEEE、IETF、ITU 等)接受为标准的加密算法?
据我了解,答案是否
4) 您的应用是否实现了任何标准加密算法,而不是使用或访问 Apple 的 iOS 或 macOS 中的加密?
据我了解,答案是是 在这种情况下我需要:
请上传一封简短的信函,说明您了解按照工业安全局 (BIS) 的要求提交年终 self 分类报告的法律义务。
我需要在哪里提交工业安全局要求的这份年终 self 分类报告?或者我可以对第二个问题回答是吗?
最佳答案
关键是“即使您的应用仅使用 iOS 或 macOS 中提供的加密,也请选择"is"。”
由于 SHA256
不是加密,因此对问题 1 回答“否”。
加密哈希函数不是加密,因为它们是单向函数,加密是可逆双向函数。
关于iOS 应用程序存在加密提交问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776855/