如何为Xamarin应用程序创建离线验证系统



我创建了一个Xamarin应用程序,可以完全离线运行。

我想实现一些机制,用密钥/密码验证应用程序。

我脑海中有这样的东西:

  1. 从带有按钮的应用程序中,生成一种随机密钥
  2. 在另一个应用程序中,输入上一个密钥并生成最终密钥
  3. 最后在应用程序中输入新生成的密码

有可能做类似的事情吗?有什么方法可以做到这一点吗?

任何想要得到提示或帮助的人都将不胜感激。

根据您的需要,您可以制作32位随机字符生成器,并将此32位随机字符串复制到另一个应用程序中进行MD5加密。然后使用MD5结果进行验证。

主APP

public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
KeyLabel.Text = CDKMaker();
Clipboard.SetTextAsync(KeyLabel.Text);
}
public string CDKMaker()
{
var key = Guid.NewGuid().ToString().Replace("-", "").Substring(0);
var value = EncryptString(key);
Preferences.Set("my_key", value);
return key;
}
private string EncryptString(string str)
{
MD5 md5 = MD5.Create();
byte[] byteOld = Encoding.UTF8.GetBytes(str);
byte[] byteNew = md5.ComputeHash(byteOld);
StringBuilder sb = new StringBuilder();
foreach (byte b in byteNew)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
private void Login(object sender, EventArgs e)
{
if (PWLabel.Text == Preferences.Get("my_key", "default_value"))
{
// login successfully
}
else
{
//login faild 
}
}
}

xaml

<StackLayout Orientation="Vertical" Padding="0,44,0,0">
<Label x:Name="KeyLabel" Text="This original Key"  VerticalOptions="Center"/>
<Button Text="Make 32 Bit Random" Clicked="Button_Clicked"/>
<Entry x:Name="PWLabel"  Placeholder="Please input password" VerticalOptions="Center" />
<Button Text="Login" Clicked="Login"/>
</StackLayout>

另一个应用

private async void Button_Click(object sender, RoutedEventArgs e)
{
// Main app has insert the cdk into clipboard. please press ctrl + v pasted.
var Password = EncryptString(cdk);

}
public static string EncryptString(string str)
{
MD5 md5 = MD5.Create();
byte[] byteOld = Encoding.UTF8.GetBytes(str);
byte[] byteNew = md5.ComputeHash(byteOld);

StringBuilder sb = new StringBuilder();
foreach (byte b in byteNew)
{

sb.Append(b.ToString("x2"));
}

return sb.ToString();
}

相关内容

  • 没有找到相关文章

最新更新