Ok found a work around; the problem of Azure not generating a useable key still exists, but the work around does get past the problem. When a migration project is created, Azure correctly creates the ID that becomes part of the key that gets generated, but the key is not formatted correctly. However, if you use Resource Graph Explorer you can find the pieces that you need to build the key in the correct format. It really shouldn't be called a "key" but rather a connection string that the appliance uses to connect to the correct subscription and resource group.
Using Resource Graph Explorer run the following query:
resources | where type == "microsoft.migrat/migrateprojects"
and look for the "id" field (download as CSV to make copy/paste easier to get the string)
You'll then have to piece together the key from the unusable key and the contents of the "id" field from the downloaded CSV.
If the appliance name was "test-migapp" and the resource group name was "rg-for-migration" and the project name is "mig-proj" then the broken/unusable key would have looked something like this (with GUIDs represented by "n")
**test-migapp**;PROD;nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn;nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn;**rg-for-migration**;**mig-proj**;nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn;nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn;https://prod.cus.discoverysrv.windowsazure.com/;centralus;false
and the output of the Resource Graph Explorer "id" field should be similar to:
/subscriptions/nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn/resourceGroups/rg-for-migration/providers/Microsoft.Migrate/migrateprojects/mig-proj
you'd piece the first three semicolon-delimeted sections from the broken key, and the entirety of the "id" field together to get:
test-migapp;PROD;nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn;/subscriptions/nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnn/resourceGroups/rg-for-migration/providers/Microsoft.Migrate/migrateprojects/mig-proj
Which would be a functional key that the appliance will accept.