Skip to content

Instantly share code, notes, and snippets.

@Emzi0767
Created September 22, 2020 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Emzi0767/cd034f96174da092fab2593d413d7321 to your computer and use it in GitHub Desktop.
Save Emzi0767/cd034f96174da092fab2593d413d7321 to your computer and use it in GitHub Desktop.
Simple password-like string generator.
// Copyright 2020 Emzi0767
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Requires NuGet package: Emzi0767.Common
using System;
using Emzi0767;
namespace ScratchPad
{
public static class Program
{
public static void Main(string[] args)
{
var alphabet = @"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+,<.>/?\|'"";:[{]}€`~".AsSpan();
while (true)
{
int klen;
using (var rng = new SecureRandom())
klen = rng.Next(96, 128);
Span<byte> buff = stackalloc byte[klen];
Span<char> chrs = stackalloc char[klen];
using (var rng = new SecureRandom())
rng.GetBytes(buff);
for (var i = buff.Length - 1; i >= 0; --i)
chrs[i] = alphabet[buff[i] % alphabet.Length];
var key = new string(chrs);
Console.WriteLine("Generated key:");
Console.WriteLine(key);
if (Console.ReadKey(true).KeyChar == 'q')
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment