SHA-1 e base64
Moderador: Moderadores
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
SHA-1 e base64
Pessoal
No harbour temos essas funcoes disponiveis ? sem depender de nada externo ?
SHA-1 e base64
No harbour temos essas funcoes disponiveis ? sem depender de nada externo ?
SHA-1 e base64
- Anexos
-
- calculo.png (8.95 KiB) Exibido 3135 vezes
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
SHA-1 e base64
Sim temos
hb_sha1
hb_base64Encode
hb_sha1
hb_base64Encode
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- Alexandre Silva
- Usuário Nível 3

- Mensagens: 376
- Registrado em: 26 Mar 2007 00:16
- Localização: Itapema - SC
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
SHA-1 e base64
Bom dia, amigos.
Essa função Base64 funciona bem com um arquivo externo?
Preciso converter um arquivo PDF para exportar dentro de um XML, com essa conversão.
Sds,
Mario.
Essa função Base64 funciona bem com um arquivo externo?
Preciso converter um arquivo PDF para exportar dentro de um XML, com essa conversão.
Sds,
Mario.
SHA-1 e base64
Boa tarde,
O Fladimir disse que para o harbour existe o hb_base64ENCODE para converter para Base64. E para o x-harbour, existe uma função equivalente. Testei esta (hb_base64ENCODE) e não funcionou.
Obrigado.
O Fladimir disse que para o harbour existe o hb_base64ENCODE para converter para Base64. E para o x-harbour, existe uma função equivalente. Testei esta (hb_base64ENCODE) e não funcionou.
Obrigado.
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
SHA-1 e base64
Bom tarde, alguém poderia por favor, postar um exemplo simples, de como se calcula o "hashCSRT" ?
Quero calcular por exemplo:
CSRT: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO
Chave de Acesso: 41180678393592000146558900000006041028190697
Obg. abs.
Quero calcular por exemplo:
CSRT: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO
Chave de Acesso: 41180678393592000146558900000006041028190697
Obg. abs.
-
toya
- Usuário Nível 3

- Mensagens: 157
- Registrado em: 26 Jul 2004 16:51
- Localização: Campo Grande/MS - Brasil
- Contato:
SHA-1 e base64
atendendo ao pedido:
Dados acima ficticios
Código: Selecionar todos
function NFe_CSRT()
// #toya: 01/02/2019 - 15:23:23 - bnpx_gxn-2019 - Release .001.001
local Result := .t.
local cIdCSRT := ""
local cCSRT := ""
local cChaveNFe := ""
local cHashCSRT := ""
// Identificador do CSRT utilizado para montar o hash do CSRT
cIdCSRT := "01"
// O CSRT será um código alfanumérico (de 16 a 36 bytes) de conhecimento apenas
// da SEFAZ do emitente e da empresa responsável pelo sistema emissor de DFe.
// O conceito é bastante similar ao código CSC da NFCe
cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" //
cChaveNFe := "41180678393592000146558900000006041028190697"
// O hashCSRT é o resultado da função hash (SHA-1 – Base64) do CSRT fornecido pelo fisco mais a Chave de Acesso da NFe.
cHashCSRT := hb_sha1( cCSRT + cChaveNFe )
return Result
Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044
FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044
FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
SHA-1 e base64
Dear Toya, acho que está faltando alguma coisa na sua função ou o Oscar não está sabendo fazer. Mira aqui, porfa:
http://fivewin.com.br/index.php?/topic/ ... -xharbour/
Obg. Abs.
http://fivewin.com.br/index.php?/topic/ ... -xharbour/
Obg. Abs.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SHA-1 e base64
Olá Pessoal,
Tentei montar essa chave usando Harbour, e usando várias CodePages, usando os exemplos que estão na NT 2018.005. Não consegui obter os resultados que está lá da tag <hashCSRT>. Mas não sei se aquele resultado é fictício.
Kapiaba, seguindo o manual e os dados de seu exemplo, entendo que seria isso:
CSRT := G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO
cChave := 41180678393592000146558900000006041028190697
- Passo 1: Concatenar o CSRT com a chave de acesso da NF-e/NFC-e que está sendo emitida:
- Passo 2: Aplicar o algoritmo SHA-1 sobre o resultado da concatenação do passo 1:
- Passo 3: Converter o resultado do passo anterior para Base64, resultando em uma string de 28 caracteres:
retorna uma string com 28 caracteres, mas diferente do manual. Aqui sempre termina com 1 ou 2 sinais de igual dependo da combinação CSRT e Chave. Não sei se isso está correto, e tentei com várias codepages, nem sei se também faz diferença.
Tentei montar essa chave usando Harbour, e usando várias CodePages, usando os exemplos que estão na NT 2018.005. Não consegui obter os resultados que está lá da tag <hashCSRT>. Mas não sei se aquele resultado é fictício.
Kapiaba, seguindo o manual e os dados de seu exemplo, entendo que seria isso:
CSRT := G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO
cChave := 41180678393592000146558900000006041028190697
- Passo 1: Concatenar o CSRT com a chave de acesso da NF-e/NFC-e que está sendo emitida:
Código: Selecionar todos
cHash := CSRT + cChaveCódigo: Selecionar todos
cHash := Hb_SHA1( cHash, .t. ) // o segundo parãmetro deve ser .T. (Raw) e retorna uma string com 20 bytes.Código: Selecionar todos
cHash := hb_base64Encode( cHash, Len( cHash ) )Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
SHA-1 e base64
Ola Jairo,
No grupo do UNINFE, teve uma discussão sobre isso da uma pesquisada la por:
[uninfe] OffTopic ... Base64 para Responsável Ténico
https://groups.google.com/d/msgid/uninf ... rce=footer
Da uma olha e ve se te ajuda...
No grupo do UNINFE, teve uma discussão sobre isso da uma pesquisada la por:
[uninfe] OffTopic ... Base64 para Responsável Ténico
https://groups.google.com/d/msgid/uninf ... rce=footer
Da uma olha e ve se te ajuda...
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SHA-1 e base64
Olá Gilberto,
Reposte o link, e use o botão URL na caixa de mensagens. O link ficou quebrado.
Reposte o link, e use o botão URL na caixa de mensagens. O link ficou quebrado.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
SHA-1 e base64
Dear Jairo Maia, many thanks, com seu exemplo, problema foi resolvido no tópico do Fivewin Brasil.
Grande Jairo Maia, muito obrigado.
Abs.
Grande Jairo Maia, muito obrigado.
Abs.
-
toya
- Usuário Nível 3

- Mensagens: 157
- Registrado em: 26 Jul 2004 16:51
- Localização: Campo Grande/MS - Brasil
- Contato:
SHA-1 e base64
ajustado:
Código: Selecionar todos
function NFe_CSRT()
local Result := .t.
local cIdCSRT := ""
local cCSRT := ""
local cChaveNFe := ""
local cHashCSRT := ""
local cBase64 := ""
cIdCSRT := "01"
cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"
cChaveNFe := "41180678393592000146558900000006041028190697"
cHashCSRT := hb_sha1( cCSRT + cChaveNFe )
msg_OK_titulo( 'cIdCSRT := "01"' + CRLF + 'cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"' + CRLF + 'cChaveNFe := "41180678393592000146558900000006041028190697"' + CRLF + 'cHashCSRT := hb_sha1( cCSRT + cChaveNFe )', "Hash do Código de Segurança do Responsável Técnico (CSRT)" )
cBase64 := HB_Base64Encode( HexToSTr( cHashCSRT ), 20 )
msg_OK_titulo( "<idCSRT>01</idCSRT>" + CRLF + "<hashCSRT>" + cBase64 + "</hashCSRT>", "Hash do Código de Segurança do Responsável Técnico (CSRT)" )
return Result
Elcio Carlos
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044
FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
(toya)
Ahora en la version 6.5
toyasis@gmail.com (e-mail)
toyaskype (skype)
http://www.toyanet.com.br
https://www.facebook.com/profile.php?id=100009195956044
FWH 11.8+PellesC+xHarbour.org 1.2.1+SqlRDD
Clippeiro por opção, Fivewiner por amor ao Clipper...
2015 - Iniciante/Aprendiz de HMG...
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SHA-1 e base64
Olá Pessoal,
Entre outras coisas, a versão 1.20 da NT 2018.005 também corrigiu o exemplo de como gerar a tag hashCSRT. Agora funciona exatamente como está no manual. Poderiam ter feito a coisa certa antes, pouparia muito tempo de muita gente:
NOTA: No exemplo da NT onde se lê: "resultando em uma string de 28 caracteres (20 bytes)", leia: "Só na cabeça do ENCAT 28 caracteres tem 20 bytes."
Entre outras coisas, a versão 1.20 da NT 2018.005 também corrigiu o exemplo de como gerar a tag hashCSRT. Agora funciona exatamente como está no manual. Poderiam ter feito a coisa certa antes, pouparia muito tempo de muita gente:
NOTA: No exemplo da NT onde se lê: "resultando em uma string de 28 caracteres (20 bytes)", leia: "Só na cabeça do ENCAT 28 caracteres tem 20 bytes."
Código: Selecionar todos
Function Main()
Clear Screen
cHash := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"
cChave := "41180678393592000146558900000006041028190697"
/*
Passo 1: Concatenar o CSRT com a chave de acesso da NF-e/NFC-e
*/
cHash := cHash + cChave
?
? "Resultado passo 1: cHash + cChave:", cHash
/*
Passo 2: Aplicar o algorítmo SHA1 resultando em uma string de 40 caracteres em Hexadecimal:
*/
cHash := Hb_SHA1( cHash, .F. ) // se usar o segundo parâmetro como .T. (raw), elimine o passo 2A
?
? "Resultado passo 2 SHA1:", cHash
/*
Passo 2A: Passar Hexadecimal para String (usei assim apenas para entender o exemplo).
Se usar no passo acima dessa forma: cHash := Hb_SHA1( cHash, .T. ), elimene essa etapa.
*/
cHash := HexToStr( cHash )
?
? "Resultado passo 2A (Hex para Str):", cHash
/*
Passo 3: Passar o resultado anterior para Base 64, resultando numa string de 28 bytes:
*/
cHash := hb_base64Encode( cHash, Len( cHash ) )
cHash := StrTran( cHash, Hb_EOL() ) // sem quebra de linha (se der erro na validação, não use StrTran())
?
? "Resultado passo 3 (<hashCSRT> em Base 64):", cHash
?
? "Bingo: Agora o exemplo da NT esta certo..: aWv6LeEM4X6u4+qBI2OYZ8grigw="
?
Return NilAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
