support generating random keys