需要将一些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转换为文本,然后将其转换为字节字符串?
谢谢你的帮助!
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编码。