我试图在
Swift中做一个简单的xor加密例程.我知道这不是一个特别安全或很好的方法,但我只需要简单.我知道代码是如何在
Javascript中实现的,我只是在将它转换为Swift时遇到了麻烦.
使用Javascript:
function xor_str() { var to_enc = "string to encrypt"; var xor_key=28 var the_res="";//the result will be here for(i=0;i<to_enc.length;++i) { the_res+=String.fromCharCode(xor_key^to_enc.charCodeAt(i)); } document.forms['the_form'].elements.res.value=the_res; }
你能提供的任何帮助都会很棒,谢谢!
解决方法
我建议像这样扩展String.
extension String { func encodeWithXorByte(key: UInt8) -> String { return String(bytes: map(self.utf8){$0 ^ key},encoding: NSUTF8StringEncoding)! }
从里到外,
>对self.utf8的调用从字符串创建一个字节数组[UInt8]
>在每个元素上调用map()并使用键值进行异或
>从XOR’ed字节数组创建一个新的String对象
这是我的Playground屏幕截图.
更新:适用于Swift 2.0
extension String { func encodeWithXorByte(key: UInt8) -> String { return String(bytes: self.utf8.map{$0 ^ key},encoding: NSUTF8StringEncoding) ?? "" } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。