Bueno, parece que el problema es del proveedor del SQL que no regresa el dato al IIS, pero haciéndolo directamente en la BD ya funciona dado que con parámetros de salida lo hace bien:
Código:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spValida]
@Clave char(10) output
AS
BEGIN
SET NOCOUNT ON;
CREATE ASYMMETRIC KEY ClaveAsimetrica
WITH ALGORITHM = RSA_2048;
INSERT INTO TEST (ClaveTxt, ClaveEncrip)
VALUES ('$$Clave$$', EncryptByAsymKey(AsymKey_ID('ClaveAsimetrica'), '$$Clave$$'))
SELECT @Clave =
CAST(DecryptByAsymKey(AsymKey_ID('ClaveAsimetrica'), ClaveEncrip) as VARCHAR)
FROM TEST
END
Y el código ASP:
Código:
cmd.CommandText = "spValida"
cmd.CommandType=adCmdStoredProc
cmd.Parameters.Append (cmd.CreateParameter("@Clave", adchar, adParamOutput,10))
cmd.Prepared = True
cmd.Execute
response.write "Valor: " & cmd.Parameters("@Clave")
Esto por fin, da el resultado esperado
Saludos!