微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift Simple XOR加密

我试图在 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] 举报,一经查实,本站将立刻删除。

相关推荐