加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift Simple XOR加密

发布时间:2020-12-14 04:58:59 所属栏目:百科 来源:网络整理
导读:我试图在 Swift中做一个简单的xor加密例程.我知道这不是一个特别安全或很好的方法,但我只需要简单.我知道代码是如何在 Javascript中实现的,我只是在将它转换为Swift时遇到了麻烦. 使用Javascript: function xor_str(){ var to_enc = "string to encrypt"; v
我试图在 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) ?? ""
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读