相关疑难解决方法(0)

如何在Swift中使用SHA1散列NSString?

在objective-c中它看起来像这样:

#include <sys/xattr.h>

@implementation NSString (reverse)

-(NSString*)sha1
{
    NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    CC_SHA1(data.bytes, (int)data.length, digest);
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];
    return output;
}

@end
Run Code Online (Sandbox Code Playgroud)

我需要Swift这样的东西,有可能吗?

请展示工作示例.

sha1 swift

55
推荐指数
4
解决办法
3万
查看次数

在Swift中将十六进制字符串转换为NSData

我得到了在Objective-C中将String转换为HEX-String的代码.

- (NSString *) CreateDataWithHexString:(NSString*)inputString
{
NSUInteger inLength = [inputString length];


unichar *inCharacters = alloca(sizeof(unichar) * inLength);
[inputString getCharacters:inCharacters range:NSMakeRange(0, inLength)];

UInt8 *outBytes = malloc(sizeof(UInt8) * ((inLength / 2) + 1));

NSInteger i, o = 0;
UInt8 outByte = 0;

for (i = 0; i < inLength; i++) {
    UInt8 c = inCharacters[i];
    SInt8 value = -1;

    if      (c >= '0' && c <= '9') value =      (c - '0');
    else if (c >= 'A' && c <= 'F') value …
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

32
推荐指数
5
解决办法
3万
查看次数

在swift 3.0中将String转换为数据

我正在尝试将字符串转换为数据类型.我认为这就是我所需要的但是如果我尝试打印它只打印"12字节"

let tString = "Hello World!"
if let newData = tString.data(using: String.Encoding.utf8){
    print(newData)
    self.peripheral?.writeValue(newData, for: positionCharacteristic, type: CBCharacteristicWriteType.withResponse)
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

swift

26
推荐指数
1
解决办法
2万
查看次数

在Swift 3中将数据转换为字符串

我对Swift很新.

我想为我的教育应用程序在Swift上创建类似API的东西.

我有这个代码:

    static func getFilm(filmID: Int) -> String {

    print("getFilm")

    let url = URL(string: "https://api.kinopoisk.cf/getFilm?filmID=\(filmID)")!
    var request = URLRequest(url: url)

    var returnData: String = ""

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        if var responseVar = response, var dataVar = data {
            print(responseVar)
            returnData = String(data: dataVar, encoding: .utf8)
        } else {
            print(error)
        }
    }

    task.resume()

    return returnData
}
Run Code Online (Sandbox Code Playgroud)

我尝试在此行中将数据转换为字符串: returnData = String(data: dataVar, encoding: .utf8)

Swift编译器给我一个错误,并将此行更改为 returnData = String(data: dataVar, encoding: .utf8)! ,当我执行此行时,我得到空的returnData变量.

如果我使用基本的示例行, print(String(data: …

string type-conversion swift3

23
推荐指数
1
解决办法
4万
查看次数

如何使用Swift打印Data类型变量的内容?

我要做的就是取一个字符串并获取其十六进制值.我一直关注这篇文章.这是我在操场上的代码:

let str = "Say Hello to My Little Friend"
let data = str.data(using: String.Encoding.utf16)
print("\(data!)")
Run Code Online (Sandbox Code Playgroud)

但是,我的代码只打印:

"60字节\n"

如何打印十六进制值?供参考,它应该是:

5361792048656c6c6f20746f204d79204c6974746c6520467269656e64
Run Code Online (Sandbox Code Playgroud)

ios swift

13
推荐指数
2
解决办法
1万
查看次数

Swift使用hash_hmac和ripemd160散列一个字符串

我试图在Swift 3(和/或目标C)中散列一个String ripemd160来模拟以下php的输出:

$string = 'string';
$key = 'test';

hash_hmac('ripemd160', $string, $key);

// outputs: 37241f2513c60ae4d9b3b8d0d30517445f451fa5
Run Code Online (Sandbox Code Playgroud)


至今:

我已经尝试过查找hash_hmac我能找到的功能,例如:
在swift中实现HMAC和SHA1加密

enum HMACAlgorithm {
    case MD5, SHA1, SHA224, SHA256, SHA384, SHA512, RIPEMD160

    func toCCHmacAlgorithm() -> CCHmacAlgorithm {
        var result: Int = 0
        switch self {
        case .MD5:
            result = kCCHmacAlgMD5
        case .SHA1:
            result = kCCHmacAlgSHA1
        case .SHA224:
            result = kCCHmacAlgSHA224
        case .SHA256:
            result = kCCHmacAlgSHA256
        case .SHA384:
            result = kCCHmacAlgSHA384
        case .SHA512:
            result = kCCHmacAlgSHA512
        case .RIPEMD160:
            result = kCCHmacAlgRIPEMD160 …
Run Code Online (Sandbox Code Playgroud)

hash cryptography objective-c swift

10
推荐指数
1
解决办法
963
查看次数

在swift和java中将字符串转换为base64字节数组给出不同的值

Incase android 一切正常。我也想在 iOS 中实现相同的功能,但得到不同的值。请检查下面的图片描述。

在 Java/Android 案例中:

我试图将字符串转换为base64字节数组中的Java一样

 byte[] data1 = Base64.decode(balance, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

在 Swift3/iOS 案例中:

我试图将字符串转换为swift 中的base64 字节数组,例如

let data:Data = Data(base64Encoded: balance, options: NSData.Base64DecodingOptions(rawValue: 0))!
let data1:Array = (data.bytes)
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

arrays encryption base64 ios swift3

6
推荐指数
1
解决办法
1778
查看次数

您应该如何将推送令牌数据转换为字符串以查看/调试/记录/放置到 http 以发送到服务器?

使用 XCode 11,我无法再查看推送令牌的完整价值。下面是一些示例代码来说明:

func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType)
{
    var method1 = NSString(format: "%@", credentials.token as CVarArg) as String
    print("method1: \(method1)")

    method1 = method1.replacingOccurrences(of: " ", with: "")
    method1 = method1.replacingOccurrences(of: "<", with: "")
    method1 = method1.replacingOccurrences(of: ">", with: "")
    print("method1 again: \(method1)")

    let method2 = String(decoding: credentials.token, as: UTF8.self)
    print("method2: \(String(describing: method2))")

    let method3 = credentials.token.description as String
    print("method3: \(method3)")
Run Code Online (Sandbox Code Playgroud)

但是,当使用 Xcode 11 运行上述代码时,输​​出如下:

method1: {length = 32, bytes = 0x5b3f44e0 6d2c5ee5 5252d3db f5bb915b …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift

5
推荐指数
1
解决办法
244
查看次数

如何访问 HashedAuthenticationCode 的代码(作为字符串)?

鉴于以下情况HashedAuthenticationCode

import CryptoKit
let key = SymmetricKey(size: .bits256)
let message = "Hello world!".data(using: .utf8)!
let authenticationCode = HMAC<SHA256>.authenticationCode(for: message, using: key)
print(authenticationCode) // "HMAC with SHA256: c818a1400a9995d5faafbb5d41cc88a6701b5d1a4ded8ac169498319a2597e2a"
Run Code Online (Sandbox Code Playgroud)

我如何访问该c818a1400a9995d5faafbb5d41cc88a6701b5d1a4ded8ac169498319a2597e2a值?最终,这必须通过 a 进行编码和序列化URLSession,但我看不到获取 HAC 的“代码”部分的明显属性!

swift ios13 apple-cryptokit

5
推荐指数
0
解决办法
171
查看次数

Swift中的十六进制/二进制字符串转换

Python有两个非常有用的库方法(binascii.a2b_hex(keyStr)和binascii.hexlify(keyBytes)),我一直在Swift中苦苦挣扎.Swift中有什么随处可用的吗?如果没有,将如何实现它?给定所有边界和其他检查(如偶数长度键).

python hex bin swift

2
推荐指数
1
解决办法
2449
查看次数