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

时间:2013-08-29 11:10:00

标签: c# .net objective-c

所以我正在对Web服务进行一些身份验证。我给出的代码示例是.NET C#,这是我从未使用过的语言。

我需要一些帮助来理解C#中发生的事情,以便我可以在Objective C中复制它.txtUserPwd是一个带有用户密码的文本框。 txtRecivedIV是从另一个服务中提取的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转换为文本,然后将其转换为字节串?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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));

让我们分解吧。 txtUserPwd.Text.PadRight(totalWidth, (char) padLen)应该将值填充为totalWidth的总长度。这将使它成为16个字符长度的倍数。 textConverter.GetBytes会将填充的字符串转换为字节数组。可能使用默认编码。所有填充都添加到字符串的末尾。

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

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

答案 1 :(得分:0)

第一部分确保长度为16的任意倍数。其余为base64 encoding