Página 1 de 1
Auntenticação de pagamentos
Enviado: 26 Mar 2007 17:27
por Pablo César
Alguem teria alguma sugestão para fazer uma espécie de autenticação para ser impresso quando um CAIXA recebe o pagamento de uma conta e autentica um boleto (por exemplo). Eu pensei em imprimir uma espécie de logotipo da empresa. Eu sei que qualquer coisa que você eu fizer será passível de falsificação. Há muito tempo a trás tinha visto um logotipo do TOYA que fazia impressão em impressoras matriciais e era feito ponto a ponto (em bits, creio eu).
Lí num FORUM que aconselhava gerar um código no programa que valide o pagamento, algum calculo relacionado com data do pagamento com o código do sacado e um dígito verificador do cálculo.
Se alguém puder mandar uma sugestão eu agradeceria.
Um clip-abraço :)Pos
Enviado: 26 Mar 2007 17:37
por Pablo César
Eu acabei encontrando o fonte e desejo compartir, mas ainda acho que não seria uma solução definitiva, e também não sei se irá funcionar numa BETMATECH.
Código: Selecionar todos
/*
Compilar
Clipper logotoya /n
rtlink fi logotoya
Autor: toya
toya@alphams.com.br
htt://www.alphams.com.br/empresas/toya/index.htm
*/
func logotoya()
local tipoprn := 2
* 1. Epson - matricial
* 2. Mini Impressora (48 colunas)
local m_val := {128,64,32,16,8,4,2}
local nbytes := 91
local m_soma := array(nbytes)
local m_toya := {}
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±****±±±±±±±±±±±****±**±±±±*****±±±±±±±±±±±±****±±±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±*****±±±±±±±±±******±±***±±±*****±±±±±±±±±±******±±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±*±±±±±*±±±±±±±±±±±±±******±±±±±±±±*******±±±***±±±*****±±±±±±±±********±±±±±±±')
aadd(m_toya,'±±±±±±*****±±±*±±±*±±±*****±±±±±±*********±±±±**±±±±±±±±±±***±±±*****±±±±±±******±±±±±±±±±±')
aadd(m_toya,'±±±±±**±±±±**±±***±±**±±±±**±±±±±*********±±±***±±±±±±±±±±±***±±±*****±±±±******±±**±±±±±±±')
aadd(m_toya,'±±±±±*±±**±±±**±*±**±±±**±±*±±±±±*********±±±***±±±±±±±±±±****±±±±*****±±******±±***±±±±±±±')
aadd(m_toya,'±±±±±**±±**±±±±*±*±±±±**±±**±±±±±******±±±±±**********±±±******±±±±***********±±*****±±±±±±')
aadd(m_toya,'±±±±±±**±±±±±±±±*±±±±±±±±**±±±±±±******±±±±±**********±±*******±±±±±*********±±******±±±±±±')
aadd(m_toya,'±±±±±±±±*****±±*±*±±*****±±±±±±±±******±±±±±**********±********±±±±±±*******±±*******±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±***±*±***±±±±±±±±±±±±******±±±±±********±**********±±±±±*******±±********±±±±±±')
aadd(m_toya,'±±±±±±±±±***±±±*±*±±±***±±±±±±±±±******±±±±±*******±±**********±±±±*******±±*********±±±±±±')
aadd(m_toya,'±±±±±±±**±±±±±*±*±*±±±±±**±±±±±±±******±±±±±******±±±**********±±±*******±±**********±±±±±±')
aadd(m_toya,'±±±±±±**±**±±**±*±**±±**±**±±±±±±******±±±±±±****±±±±±±±±±±***±±±*******±±***********±±±±±±')
aadd(m_toya,'±±±±±±±**±±±**±±*±±**±±±**±±±±±±±******±±±±±±***±±±±±±±±±±±***±±*******±±*****±******±±±±±±')
aadd(m_toya,'±±±±±±±±**±**±±±±±±±**±**±±±±±±±±******±±±±±±±***±±±±±±±±±±**±±*******±±******±±*****±±±±±±')
aadd(m_toya,'±±±±±±±±±±**±±±±±±±±±**±±±±±±±±±±************±±***±±±*******±±*******±±**************±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±************±±***±±******±±*******±±******±±±*****±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±************±±±**±****±±±*******±±******±±±±****±±±±±±±±')
aadd(m_toya,'±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±')
set cons off
set prin on
if tipoprn = 1
? chr(27)+'A'+chr(8)
else
? chr(27)+'@'
?? chr(27)+'A'+chr(8)
endi
*
*
* ?? chr(27)+'Y'+chr(64)+chr(0)
* | | |
* | | +--- n2
* | +---------- n1
* +---------------- p
*
* p -> altera a densidade
* p=K densidade simples
* p=L densidade dupla
* p=Y alta velocidade com densidade dupla
* p=Z densidade qu drupla
*
* n1 e n2 definem a quantidade de colunas gr ficas a serem transmitidas
*
* No nosso exemplo ter¡amos:
*
* 64 colunas / 256 = 0.25
* portanto,
* n2 ser igual a 0 que ‚ a parte inteira da divisÆo
* n2 = 0
*
* 64 colunas - (256 * n2) = 64
* portanto,
* n1 ser igual a 64
*
*
*
densidade := 'K'
caracter := '±'
afill(m_soma,0)
for i=1 to 7
a := m_toya[i]
for j=1 to nbytes
if subs(a,j,1)= caracter
m_soma[j] := m_soma[j] + m_val[i]
endi
next
next
?? chr(27)+densidade+chr(nbytes)+chr(0)
for i=1 to nbytes; ?? chr(m_soma[i]+1);next
?? ' toya Comercial Informatica'
?
afill(m_soma,0)
for i=1 to 7
a := m_toya[i+7]
for j=1 to nbytes
if subs(a,j,1)= caracter
m_soma[j] := m_soma[j] + m_val[i]
endi
next
next
?? chr(27)+densidade+chr(nbytes)+chr(0)
for i=1 to nbytes; ?? chr(m_soma[i]+1);next
?
afill(m_soma,0)
for i=1 to 7
a := m_toya[i+14]
for j=1 to nbytes
if subs(a,j,1)= caracter
m_soma[j] := m_soma[j] + m_val[i]
endi
next
next
?? chr(27)+densidade+chr(nbytes)+chr(0)
for i=1 to nbytes; ?? chr(m_soma[i]+1);next
?? '(c)-1998~1999 Fone: (067) 441.2861'
?
?
?
? chr(27)+'@'
?
?
?
?
set cons on
set prin off
return nil
Fico no aguardo para mais alguma idéia.
Um clip-abraço
Enviado: 26 Mar 2007 19:48
por Maligno
Uma idéia que eu usaria: imprimir o hash MD5 na própria autenticação. Se alguém quiser falsificar, terá de saber quais dados foram utilizados no cálculo. Eu arrisco dizer que será impossível de falsificar. Principalmente, se você "somar" à string dos dados uma string secreta que SÓ você conhece.
Logicamente, você teria de ter uma opção no programa que mostre o hash que a autenticação deverá ter. Mas com senha para acesso privilegiado, claro.
[]'s
Maligno
http://www.buzinello.com/prg
Enviado: 26 Mar 2007 20:46
por Pablo César
É mesmo !. Não lembrava do MD5 que você inclusive disponibilizou pra nós. Certo mesmo que é uma solução bem prática e pode ser conjugada como quiser. Mas mesmo fizer com os dados simples e uma string secreta, acho que seria muito difícil mesmo de burlar.
Valeu ! MALIGNO !.
Um clip-abraço ! :)Pos
Enviado: 26 Mar 2007 21:07
por Maligno
Pablo César escreveu:É mesmo !. Não lembrava do MD5 que você inclusive disponibilizou pra nós.
Inclusive vou repetir o link, para o caso de mais alguém se interessar:
http://buzinello.com/download/md5.zip
[]'s
Maligno
http://www.buzinello.com/prg