Agora está limitando ao menor.
Houve alguma mudança no FOR/EACH?
Nota: já alterei pra array e acontece o mesmo.
#include "inkey.ch"
PROCEDURE Main
LOCAL cText := "TESTANDO CRIPTO", cKeyList := "123456"
LOCAL cLetter, cNumber
LOCAL cCripto := "", cDescripto := ""
//cKeyList := Left( Replicate( cKeyList, 5 ), Len( cText ) )
FOR EACH cLetter, cNumber IN cText, cKeyList
cCripto += Chr( Asc( cLetter ) - Val( cNumber ) )
NEXT
? cCripto
FOR EACH cLetter, cNumber IN cCripto, cKeyList
cDescripto += Chr( Asc( cLetter ) + Val( cNumber ) )
NEXT
? cDescripto
Inkey(0)
RETURN