需要将一些C#翻译成Obj-C

本文关键字:翻译 Obj-C | 更新日期: 2023-09-27 18:29:40

所以我正在针对web服务进行一些身份验证。我得到的代码示例是用.NET C#编写的,这是一种我从未使用过的语言。

我需要一些帮助来理解C#中发生了什么,这样我就可以在Objective C中复制它。txtUserPwd是一个文本框,里面有用户密码。txtRivedIV是从另一个服务中提取的IV(稍后会进行一些加密)。

// Pad entered password to multiple of 16
int padLen = 16 - (txtUserPwd.TextLength % 16);
int totalWidth = txtUserPwd.TextLength + padLen;
byte[] password = textConverter.GetBytes(txtUserPwd.Text.PadRight(totalWidth, (char) padLen));
// Decode entered IV
byte[] decodedIV = Convert.FromBase64String(txtReceivedIV.Text);

我猜第一部分用一些空格填充字符串,但我不确定有多少空格或在哪里。我猜第二部分将接收到的IV从Base64转换为文本,然后将其转换为字节字符串?

谢谢你的帮助!

需要将一些C#翻译成Obj-C

int padLen = 16 - (txtUserPwd.TextLength % 16)

padLen设置为txtUserPwd.TextLength与密码长度之外16的最接近倍数之间的差值。如果密码是8个字符,则为。如果密码是12个字符,padLen将为4。如果密码为20个字符,则为12个字符。

int totalWidth = txtUserPwd.TextLength + padLen;

只是总结一些东西。

byte[] password = textConverter.GetBytes(txtUserPwd.Text.PadRight(totalWidth, (char) padLen));

让我们把它分解一下。CCD_ 7应该只是将该值填充到totalWidth的总长度。这将使其长度为16个字符的倍数。CCD_ 9将填充字符串转换为字节数组。可能使用默认编码。所有填充都会添加到字符串的末尾。

byte[] decodedIV = Convert.FromBase64String(txtReceivedIV.Text);

这只是将base64字符串转换为字节数组。

第一部分确保长度是16的任意倍数。剩下的是base64编码。