I have written a simple smart contract. I'm running it using rinkeby testnet. But the problem is that any machine can access and see the data. But I need only to send the data to a specific machine( Think of an organization).
Maybe you should consider to use an Ethereum private network or other permissioned blockchain technologies, e.g. Hyperledger. Indeed, Ethereum (as well as Bitcoin) is a permissionless (i.e. without authentication) blockchain, that means that potentially every machine in the network can access to the data of the smart contract.