# Why can't I modify someone else's transactions, if I have their signature data?

As I know, signature system is adding signature to end of transaction. And doesn’t hash transaction, so others can know my signature.

If I can send a message directly to the node, can I use other’s signature and send currency to me?

For example, Alice make a transaction sending 1bitcoin to Bob. Then Alice will send her digital signature to nodes. And nodes will verify it is from Alice and share the transaction with address, signature, etc.

At here, I can know her signature and can send a transaction with her signature. Then nodes will verify this transaction is from Alice and share it.

I’m very beginner of cryptocurrency, so can you let me know where has problem?

The signature Alice creates is not just arbitrarily appended to her transaction. It is created by taking the transaction (or in some cases just parts of the transaction) as input, and then by using the relevant private key, a signature is created over this transaction data.

So when Alice signs the transaction, the signature that is created will only be valid for the specific transaction that was signed. If any part of that transaction is modified, then the signature will no longer be seen as valid by other nodes on the network. Thus you cannot just modify the transaction to pay to a different address, as doing so would make the transaction invalid.

A digital signature is produced using a mathematical function that takes two numbers `a` and `b` from which the function produces a number `c`. The mathematical function is one which cannot be reversed, given `c` and `a` you cannot work out `b`.

So `a` can be the numeric value of a message being signed and `b` can be a number used as a private key that no one else can ever discover.

A separate mathematical function can take the message `a`, the signature `c` and another number `d` that is related to `b` and tell you if the signature is good. `d` is called a public key. You cannot mathematically work out the private key `b` from this public key `d`, so the private key `b` is always a secure secret that is not revealed by the signature or the checking process.

So the signature `c` of a message `a` is not usable as a signature for a different message, a different value of `a` produces a different value of `c` and the checking process will show this.

A signature as in a scribble on a paper: you could just cut it out and put onto a different piece of paper.

A cryptographic signature: it signs only exactly one specific thing; nothing else. Cannot be put onto different data.

More accurately, it signs a 128 or 256 bit message, which is the hash of whatever you are signing. Different message = different hash => signature not valid.